![](/img/trans.png)
[英].NET standard assemblies: create nuget packages that can be used by .NET Core and full .NET hosted by local Nuget.Server
[英]Can I use .NET Standard to wrap .NET Core NuGet packages and make them available in classic .NET?
我正在瀏覽這篇博文:
https://www.hanselman.com/blog/ReferencingNETStandardAssembliesFromBothNETCoreAndNETFramework.aspx
.. 及其源代碼:
https://github.com/ScarlettCode/Example
據我了解,它將 .NET Core NuGet 包 (Microsoft.EntityFrameworkCore) 包裝在 .NET Standard 庫中,並使其可用於經典的 .NET 4.6.1 應用程序:
<PackageReference Include="Microsoft.EntityFrameworkCore.InMemory" Version="2.0.0" />
我對么? 這是一種將 .NET Core NuGet 包包裝在 .NET 標准庫中的技術,可以在經典的 .NET Framework 4.6.1 應用程序中調用它們嗎?
我可以使用 .NET Standard 來包裝 .NET Core NuGet 包並使其在經典 .NET 中可用嗎?
嗯,差不多,但不完全。
據我了解,它將 .NET Core NuGet 包 (Microsoft.EntityFrameworkCore) 包裝在 .NET Standard 庫中,並使其可用於經典的 .NET 4.6.1 應用程序。
這就是你誤會的地方。 包參考適用於 Microsoft.EntityFrameworkCore.InMemory 的 2.0.0 版。 我們可能認為這個包是“.NET Core 的一部分”,但實際上在二進制級別,該包面向 .NETStandard 2.0。
我怎么知道包的目標是 .NET Standard 2.0? 我通過查看其NuGet 頁面的 Dependencies 部分或咨詢Fuget 來確定這一點。
.NET 4.6.1* 和 .NET Core 2.0 都支持 .NET Standard 2.0 ,也就是說這兩個框架(和更新版本)都可以引用 .NET Standard 2.0 庫。
那么讓我們回到你最初的問題:
我可以使用 .NET Standard 來包裝 .NET Core NuGet 包並使其在經典 .NET 中可用嗎?
不,但您可以將代碼打包到面向 .NET Standard 的庫中,並使用來自 .NET Core 項目和 .NET Framework 項目的庫; 同樣,您可以在 .NET Framework 項目中引用 Nuget 包,前提是它們以 .NET Standard 為目標,即使包的名稱中有“Core”並且您認為它是 .NET Core 的一部分。 這就是 .NET Standard 的美妙之處。
這里的關鍵是密切關注 Nuget 描述頁面的依賴關系部分!
*請注意,雖然 .NET 4.6.1 正式支持 .NET Standard 2.0,但 Microsoft 建議使用 4.7.2 或更高版本。 請在此處查看我的回答以獲取更多信息。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.