You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

升级System.Diagnostics.DiagnosticSource 9.0.2后Azure DevOps构建路径错误

解决System.Diagnostics.DiagnosticSource 9.0.2在.NET Framework 4.7.2 Azure DevOps构建中的MSB3021错误

以下是针对该问题的可行解决方案:

  • 回退到验证过的兼容版本
    直接将System.Diagnostics.DiagnosticSource版本回退至6.0.2,该版本在你的.NET Framework 4.7.2环境及Azure DevOps流水线中已验证可用,可快速规避新版本的兼容性问题。修改项目的packages.config或.csproj文件中的版本号后,重新执行NuGet还原操作。

  • 手动排除ILLink文件的复制操作
    ILLink.Descriptors.LibraryBuild.xml是针对.NET Core/.NET 5+的裁剪工具设计的,.NET Framework 4.7.2无需此文件。可在项目的.csproj中添加配置跳过该文件的复制:

    <ItemGroup>
      <Content Remove="packages\System.Diagnostics.DiagnosticSource.9.0.2\build\netstandard2.0\ILLink.Descriptors.LibraryBuild.xml" />
      <None Include="packages\System.Diagnostics.DiagnosticSource.9.0.2\build\netstandard2.0\ILLink.Descriptors.LibraryBuild.xml">
        <CopyToOutputDirectory>Never</CopyToOutputDirectory>
      </None>
    </ItemGroup>
    

    也可通过目标任务通用删除该文件:

    <Target Name="RemoveILLinkFiles" BeforeTargets="CopyAllFilesToSingleFolderForPackage;CopyFilesToOutputDirectory">
      <ItemGroup>
        <ILLinkFilesToRemove Include="$(OutputPath)\ILLink.Descriptors.LibraryBuild.xml" />
      </ItemGroup>
      <Delete Files="@(ILLinkFilesToRemove)" />
    </Target>
    
  • 更新自托管代理的NuGet环境
    自托管代理的NuGet版本可能对新版本包的路径处理逻辑存在缺陷。尝试升级代理上的NuGet至最新稳定版,同时清理代理本地的NuGet缓存(删除%userprofile%\.nuget\packages下的System.Diagnostics.DiagnosticSource相关目录),之后重新执行构建流水线。

  • 强制指定包的框架兼容性
    在项目的.csproj文件中明确指定该包针对.NET Framework 4.7.2的兼容设置,并抑制框架不匹配警告:

    <PackageReference Include="System.Diagnostics.DiagnosticSource" Version="9.0.2">
      <TargetFrameworks>net472</TargetFrameworks>
      <NoWarn>NU1701</NoWarn>
    </PackageReference>
    

内容的提问来源于stack exchange,提问作者Rasmus4J

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 05:03:18