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

MSBuild输出文件全大写致Azure DevOps流水线失败,求助排查

.NET项目构建后Bin文件夹文件全大写问题排查与解决

问题概述

我们使用Azure DevOps的Visual Studio build任务构建.NET项目,近期构建服务器输出到\bin文件夹的所有文件均变为大写,导致后续构建和发布流水线失败。在构建服务器上执行以下命令可复现该问题:

MSBuild.exe OurSolution.sln /p:Configuration=Release /p:Platform="Any CPU"

关键现象:

  • .csproj文件无异常,所有解决方案和项目均出现此问题,且几天前构建完全正常
  • MSBuild日志显示输出文件名大小写正确,\obj文件夹内的文件也保持正常命名,仅在从obj复制到bin的环节发生了大写重命名
  • 已尝试更新Azure DevOps构建代理及服务器上的Visual Studio 2022构建工具,但问题未解决

排查方向与解决方案

1. 检查文件系统大小写敏感性设置

NTFS默认不区分大小写,但如果构建服务器的bin文件夹(或其父目录)被启用了大小写敏感性,可能导致文件复制时被强制转换。可通过以下PowerShell命令检查并修改:

# 查看目标文件夹的大小写敏感性状态
fsutil file queryCaseSensitiveInfo C:\Your\Project\Path\Bin

# 若已启用,禁用该属性(需管理员权限)
fsutil file setCaseSensitiveInfo C:\Your\Project\Path\Bin disable

注意:如果是Azure DevOps代理的工作目录,需确认近期是否有配置变更开启了该属性。

2. 查看MSBuild复制任务的详细日志

通过开启MSBuild详细日志,追踪文件复制阶段的具体行为,排查是否有自定义逻辑或第三方扩展干预:

MSBuild.exe OurSolution.sln /p:Configuration=Release /p:Platform="Any CPU" /v:detailed

在日志中搜索Copy任务,重点查看DestinationFiles参数是否被修改,或是否有第三方MSBuild任务(如打包、部署工具)在修改文件名。

3. 排查系统环境或第三方工具变更

近期服务器的系统更新、环境变量修改或第三方工具可能影响文件复制行为:

  • 检查是否新增了与文件操作相关的环境变量(如Windows的COPYCMD参数,是否被设置为强制大写)
  • 确认杀毒软件、文件同步/备份工具是否在监控bin文件夹,导致文件被自动重命名

4. 重置MSBuild输出配置

尝试在构建命令中显式指定输出路径,并禁用可能的自定义输出逻辑:

MSBuild.exe OurSolution.sln /p:Configuration=Release /p:Platform="Any CPU" /p:OutputPath=.\bin\Release /p:UseCommonOutputDirectory=false

如果问题消失,说明项目或解决方案的全局配置文件(如.Directory.Build.props/.Directory.Build.targets)中存在自定义的文件名转换逻辑,需检查并调整。

5. 检查Azure DevOps构建任务参数

确认Visual Studio build任务中是否新增了额外的MSBuild参数或自定义条件,导致文件名被转换。比如是否添加了第三方扩展引入的自定义参数(如强制文件名大写的配置)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 13:42:46