如何创建一个多目标但针对每个框架的不同 dll 的 .NET Core 库?

我正在尝试将当前面向 .NET4.0 的库更新为:

  • 网络标准 2.0

  • NET4.5.2

使用多目标。

我使用的依赖库是Microsoft.Build.Framework. 它可以在两个地方找到:

  • NuGet 最低级别为 NET4.6

  • GAC 通过完整框架(例如C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\Microsoft.Build.Framework.dll

由于 nuget 包最小级别高于 4.5.2,我无法在 452 目标中使用该 nuget 包。

那么,是否可以说: - 使用 NS20 时,请使用 nuget 包。- 使用NET4.5.2时,请使用GAC版本。

谢谢!


慕哥6287543
浏览 193回答 2
2回答

慕婉清6462132

您可以有条件地定义依赖项,具体取决于构建项目的当前目标框架。为此,您需要调整项目文件以在一种情况下使用 NuGet 依赖项,或在另一种情况下使用标准的非 NuGet 引用。那看起来像这样:<Project Sdk="Microsoft.NET.Sdk">&nbsp; <PropertyGroup>&nbsp; &nbsp; <!-- other properties -->&nbsp; &nbsp; <TargetFrameworks>netstandard2.0;net452</TargetFrameworks>&nbsp; </PropertyGroup>&nbsp; <ItemGroup>&nbsp; &nbsp; <!-- common references -->&nbsp; </ItemGroup>&nbsp; <ItemGroup Condition="'$(TargetFramework)' == 'net452'">&nbsp; &nbsp; &nbsp;<Reference Include="Microsoft.Build.Framework" />&nbsp; </ItemGroup>&nbsp; <ItemGroup Condition="'$(TargetFramework)' != 'net452'">&nbsp; &nbsp; &nbsp;<PackageReference Include="Microsoft.Build.Framework" Version="15.7.179" />&nbsp; </ItemGroup></Project>所以net452会得到Microsoft.Build.Framework带有Reference元素的普通程序集引用,它可以从 GAC 或本地目录解析,其他框架将使用PackageReference.
打开App,查看更多内容
随时随地看视频慕课网APP