簡體   English   中英

我可以在經典的 .NET 4.6.1 應用程序中使用 .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.

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