繁体   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