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

2022年8月Azure windows-latest变更致dotnet pack失败求助

问题诊断与解决方案

核心问题分析

报错路径D:\a\1\s\Company.Product\bin\Debug;VersionSuffix=build-pack-fix.2596\net40\Company.Product.dll里的分号是关键——这说明VersionSuffix属性被错误解析到了输出目录的Configuration字段中,导致路径拼接异常,找不到目标文件。这个问题是MSBuild 17.3.0(对应.NET SDK 6.0.400系列)的NuGet Pack任务逻辑变更引发的,而windows-latest镜像近期确实完成了MSBuild从17.2.0到17.3.0的升级,同时同步更新了.NET SDK版本。

可行解决方案

  • 修正dotnet pack参数传递方式:
    避免依赖--version-suffix简写参数,改用MSBuild属性传递的方式明确指定版本后缀,同时强制指定编译配置:

    dotnet pack /p:Configuration=Debug /p:VersionSuffix=build-pack-fix.2596
    

    这种方式能避免属性被错误嵌入到输出路径的Configuration部分。

  • 显式指定输出目录:
    在dotnet pack命令中添加--output参数,彻底规避自动生成路径的解析问题:

    dotnet pack /p:Configuration=Debug /p:VersionSuffix=build-pack-fix.2596 --output $(Build.ArtifactStagingDirectory)
    
  • 临时回退到旧版本工具链:
    如果需要快速恢复流水线运行,可以在Azure Pipelines中指定使用MSBuild 17.2.0对应的.NET SDK版本(如6.0.302),通过UseDotNet任务配置:

    - task: UseDotNet@2
      inputs:
        packageType: 'sdk'
        version: '6.0.302'
    

关于windows-latest的变更说明

windows-latest镜像(当前指向Windows Server 2022)在近期更新中,将MSBuild版本从17.2.0升级到了17.3.0,同时.NET SDK也同步升级到6.0.400系列。这次更新调整了NuGet.Build.Tasks.Pack任务中输出路径的拼接逻辑,导致之前依赖简写参数的命令触发了路径解析错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 17:48:15