如果在 .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>
?这有什么好处?
答案 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>