簡體   English   中英

“IServiceCollection”不包含“AddControllers”的定義

[英]'IServiceCollection' does not contain a definition for 'AddControllers'

我有一個 ASP.NET Core 3.0 項目在以下啟動時運行良好:

public void ConfigureServices(IServiceCollection services)
{
    services.AddCors();            
    services.AddControllers();
}

現在我想把這個設置移到另一個項目中,作為一個通用 dll,供許多其他 ASP.NET Core 3.0 項目使用,所有這些項目都將通過調用services.Configure();來執行啟動services.Configure(); ,考慮到Configure將是我創建的擴展方法。

為此,我使用以下 .csproj 文件創建了另一個項目:

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <TargetFramework>netstandard2.1</TargetFramework>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="Microsoft.AspNetCore.Mvc" Version="2.2.0" />
    <PackageReference Include="Microsoft.AspNetCore.Cors" Version="2.2.0" />
    <PackageReference Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="2.2.0" />
  </ItemGroup>

</Project>

以及以下課程:

using System;
using Microsoft.Extensions.DependencyInjection;

namespace MyCommon.Extensions
{
    public static class MyIServiceCollectionExtensions
    {
        public static class IServiceCollectionExtensions
        {
            public static IServiceCollection Configure(this IServiceCollection services)
            {
                services.AddCors();
                services.AddControllers();
                return services;
            }
        }
    }
}

這給了我以下構建錯誤:

“IServiceCollection”不包含“AddControllers”的定義

由於我已經添加了Microsoft.AspNetCore.Mvc,我不明白為什么找不到AddControllers方法。

我在 Asp .netcore 3.0 上得到了同樣的結果。 通過添加 Microsoft.AspNetCore.Mvc.NewtonsoftJson 包解決了它。

Services.AddControllers 是在 3.0 核心而不是 2.2 中添加的,此外,由於序列化問題,建議在使用 .NET Core 3.0+ 時使用 Newtonsoft.Json:Nuget。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM