我可以用吗.NET标准包装.NET Core NuGet软件包,并使其在经典版本中可用.NET



我正在浏览这篇博客文章:

https://www.hanselman.com/blog/ReferencingNETStandardAssembliesFromBothNETCoreAndNETFramework.aspx

及其源代码:

https://github.com/ScarlettCode/Example

据我所知,它包含了一个。NET Core NuGet包(Microsoft.EntityFrameworkCore)。NET标准库,并使其可用于经典。NET 4.6.1应用程序:

<PackageReference Include="Microsoft.EntityFrameworkCore.InMemory" Version="2.0.0" />

我说得对吗?这可能是一种包装技巧吗。NET Core NuGet包。NET标准库可以在经典中调用它们。NET Framework 4.6.1应用程序?

我可以使用吗。NET标准包装。NET Core NuGet软件包,并使其在经典版本中可用。NET?

差不多,但不完全。

据我所知,它包装了一个。NET Core NuGet包(Microsoft.EntityFrameworkCore)。NET标准库,并使其可用于经典。NET 4.6.1应用程序。

这就是你误解的地方。软件包参考适用于Microsoft 2.0.0版本。EntityFrameworkCore。InMemory。我们可能会认为这个包是".NET核心的一部分",但事实上,在二进制级别上,它的目标是。NET标准2.0。

我如何知道包裹的目标。NET标准2.0?我通过查看NuGet页面的Dependencies部分或咨询Fuget来确定这一点。

NET 4.6.1*和。NET Core 2.0都支持。NET标准2.0,也就是说这两个框架(以及更新的版本)都可以参考。NET标准2.0库。

让我们回到你最初的问题:

我可以使用吗。NET标准包装。NET Core NuGet软件包,并使其在经典版本中可用。NET?

没有,但您可以将代码打包到目标库中。NET标准,并使用中的这些库。NET核心项目AND。NET框架项目;同样,您可以在中引用Nuget包。NET Framework项目提供了它们的目标。NET标准,即使包的名称中有"Core",并且您认为它是的一部分。NET核心。这就是的美。NET标准。

这里的关键要点是要密切关注Nuget描述页面的Dependencies部分!


*注意,while。NET 4.6.1正式支持。NET Standard 2.0,Microsoft建议使用4.7.2或更高版本。有关更多信息,请参阅此处的答案

最新更新