【发布时间】:2020-04-02 23:45:15
【问题描述】:
我有一个 ASP.NET Core 3.0 项目运行良好,启动如下:
public void ConfigureServices(IServiceCollection services)
{
services.AddCors();
services.AddControllers();
}
现在我想将此设置移动到另一个项目,作为通用 dll 供数十个其他 ASP.NET Core 3.0 项目使用,所有这些项目都将通过调用 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 package,我不明白为什么找不到AddControllers 方法。
【问题讨论】:
-
AddControllers是在 3.0 中添加的,但您在 .NET Standard 项目中使用的是 2.2。您不能针对 .NET Standard 和使用 ASP.NET Core 3.0 组件 - ASP.NET Core 仅在 .NET Core 上运行。 docs 可能会有所帮助。 -
@KirkLarkin 谢谢。如果您将此评论转换为答案,我将能够将其标记为有帮助。
-
@Manpreet Kaur 回答有帮助,但我很好奇 Newtonsoft.Json 如何影响 Microsoft.Extensions.DependencyInjection.MvcServiceCollectionExtensions 中的扩展方法?
标签: c# .net asp.net-core .net-core