![](/img/trans.png)
[英]Can I use packages written for .NET Framework in .NET Standard 2.0?
[英]Can I use a .NET Standard 2.0 package in a classic .NET 4.6.1 application?
我有點困惑如何在.net core和.net-framework應用程序之間共享.net-standard 2 nuget 包。 例如,我創建了.net-standard 2.0包,只有<TargetFramework>netstandard2.0</TargetFramework>
。 所以我在包中只有../libs/netstandard2.0
文件夾。 我可以將它按原樣安裝到 .net-framework 4.6.1 中嗎? 應用程序(根據 兼容性矩陣我可以)? 或者我應該讓這個包成為多目標<TargetFrameworks>netstandard2.0;net461</TargetFrameworks>
? 這里有什么優勢?
確實是的。 您可以僅從 .NET Framework 4.6.1 項目中引用 .NET Standard 2.0 包(較低的框架版本將不適用於 .NET Standard 2.0)。 不需要有單獨的目標或重建。
另請閱讀從 .NET Core 和 .NET Framework 中引用 .NET 標准程序集。
關於使用多目標的好處:除非你需要,否則沒有。 這種情況怎么辦? 根據文檔:
當您的項目同時支持 .NET Framework 和 .NET Core 時,您可能需要面向較舊版本的 .NET Framework。 在這種情況下,如果要為較新的目標使用較新的 API 和語言構造,請在代碼中使用 #if 指令。 您可能還需要為每個目標平台添加不同的包和依賴項,以包含每種情況所需的不同 API。
因此,只有在代碼或引用不兼容時才真正需要它。 如果你沒有這個問題,你就不需要多目標。
有一個示例給出了如何根據構建目標包含引用,這可能會提供一些見解:
<ItemGroup Condition="'$(TargetFramework)' == 'net40'">
<Reference Include="System.Net" />
</ItemGroup>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.