我可以在经典的.NET 4.6.1应用程序中使用.NET Standard 2.0软件包吗?

时间:2017-10-03 07:47:49

标签: c# .net .net-standard-2.0

如果在 .net核心 .net-framework 应用程序之间共享 .net-standard 2 nuget包,我有点困惑。例如,我创建了仅包含<TargetFramework>netstandard2.0</TargetFramework> .net-standard 2.0 包。所以我的包中只有../libs/netstandard2.0个文件夹。我可以按原样安装到.net-framework 4.6.1中。申请(根据compatibility matrix我可以)?或者我应该使这个包多目标<TargetFrameworks>netstandard2.0;net461</TargetFrameworks>?这有什么好处?

1 个答案:

答案 0 :(得分:2)

是的,的确如此。您可以从.NET Framework 4.6.1项目中引用.NET Standard 2.0软件包(较低的框架版本不适用于.NET Standard 2.0)。无需单独的目标或重建。

另请阅读Referencing .NET Standard Assemblies from both .NET Core and .NET Framework

关于使用多重定位的好处:除非您需要,否则没有。可能是这样的情况?根据{{​​3}}:

  

当您的项目同时支持.NET Framework和.NET Core时,您可能需要定位旧版本的.NET Framework。在这种情况下,如果要为较新的目标使用较新的API和语言结构,请在代码中使用#if指令。您还可能需要为每个要定位的平台添加不同的包和依赖项,以包含每个案例所需的不同API。

因此,如果您在代码或引用中存在不兼容性,那么您真的需要它。如果您没有遇到此问题,则不需要进行多重定位。

有一个示例给出了如何根据构建目标包含引用,这可能会提供一些见解:

<ItemGroup Condition="'$(TargetFramework)' == 'net40'">
  <Reference Include="System.Net" />
</ItemGroup>