为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

C#
慕哥6287543 2021-10-23 17:04:08
我正在尝试将当前面向 .NET4.0 的库更新为:网络标准 2.0NET4.5.2使用多目标。我使用的依赖库是Microsoft.Build.Framework. 它可以在两个地方找到:NuGet 最低级别为 NET4.6GAC 通过完整框架(例如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版本。谢谢!
查看完整描述

2 回答

?
慕婉清6462132

TA贡献1804条经验 获得超2个赞

您可以有条件地定义依赖项,具体取决于构建项目的当前目标框架。为此,您需要调整项目文件以在一种情况下使用 NuGet 依赖项,或在另一种情况下使用标准的非 NuGet 引用。


那看起来像这样:


<Project Sdk="Microsoft.NET.Sdk">


  <PropertyGroup>

    <!-- other properties -->

    <TargetFrameworks>netstandard2.0;net452</TargetFrameworks>

  </PropertyGroup>


  <ItemGroup>

    <!-- common references -->

  </ItemGroup>


  <ItemGroup Condition="'$(TargetFramework)' == 'net452'">

     <Reference Include="Microsoft.Build.Framework" />

  </ItemGroup>

  <ItemGroup Condition="'$(TargetFramework)' != 'net452'">

     <PackageReference Include="Microsoft.Build.Framework" Version="15.7.179" />

  </ItemGroup>


</Project>

所以net452会得到Microsoft.Build.Framework带有Reference元素的普通程序集引用,它可以从 GAC 或本地目录解析,其他框架将使用PackageReference.


查看完整回答
反对 回复 2021-10-23
  • 2 回答
  • 0 关注
  • 192 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号