在netstandard

时间:2017-09-11 08:34:13

标签: c# .net asp.net-core .net-core

目前我正在将一个asp web api移植到.Net Core。

api使用一个Class库,它提供了ActionFilterAttribute类的一些实现。

所以我也必须移植这个类库。 当我尝试将nuget包Microsoft.AspNetCore.All添加到类库时,我收到了此错误:

  

包Microsoft.AspNetCore.All 2.0.0与。不兼容   netstandard2.0

当我将目标框架更改为netcoreapp2.0时,我可以安装该软件包,但当然我需要这个目标类型的入口点。

如何创建可以使用Microsoft.AspNetCore.All包的netcore类库

问候

2 个答案:

答案 0 :(得分:10)

元数据包Microsoft.AspNetCore.All仅适用于.NETCoreApp。这是by design,因为它明确地定位为在.NET Core上运行的Web应用程序的便利包。为了在发布时发挥其神奇功能(剥离未使用的依赖项),它需要.NET Core运行时存储,该存储仅适用于.NET Core本身。

所有其他项目,包括在.NET Standard上运行的库项目,但也包括在完整.NET Framework上运行的所有项目,都应该使用单独的包引用。

因此,您可以参考例如Microsoft.AspNetCore.All,而不是引用ActionFilterAttributeMicrosoft.AspNetCoreMicrosoft.AspNetCore.Mvc获取reduce

答案 1 :(得分:6)

你不能(技术上你可以通过NuGet Fallback,但你不应该因为它可能会影响你的可移植性),你不应该。

.All包是一个便利的元包,所以即使是最简单的ASP.NET核心项目也不需要引用十几个或其他程序集。

它的目标是.NET Core,因此您无法在.NET Standard中使用它。

发布应用程序时,将删除未使用的软件包。在执行类库时,您不希望依赖于所有内容,只需要依赖项目所需的包。