簡體   English   中英

我可以使用 .NET Standard 來包裝 .NET Core NuGet 包並使其在經典 .NET 中可用嗎?

[英]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.

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