![](/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.