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

Error MSB3174:使用%2a自动递增版本号时AssemblyVersion无效如何解决

问题解答

错误原因(对应问题2)

是的,该报错就是你使用%2a直接写入版本号字段导致的。
%2a是*符号的URL编码值,你参考的脚本逻辑原本是要将版本号的修订号位替换为通配符*,让MSBuild自动关联ApplicationRevision节点存储的实际修订号。但你的脚本误将URL编码后的%2a直接写入了AssemblyVersion/ApplicationVersion字段,MSBuild识别版本号时无法解析%2a这个非法字符,就会抛出MSB3174错误。你手动修改完AssemblyVersion后仍然报错,大概率是脚本在流水线运行阶段又自动把版本号改回了带%2a的格式,或者你遗漏了修改ApplicationVersion字段(ClickOnce发布场景下会同时读取这两个版本字段)。

解决方法(对应问题1)

  • 首先修正你的PowerShell脚本逻辑,所有修改版本号的位置,都把写入的%2a替换为原始通配符*,比如正确的自动递增版本号格式应为1.0.0.*。
  • 检查csproj文件中的所有版本相关节点,包括AssemblyVersion、FileVersion、ApplicationVersion,确保没有遗留%2a字符,所有版本号要么为全四位数字格式,要么仅使用*作为通配符。
  • 如果你需要保留ClickOnce自动关联修订号的逻辑,确认csproj中已经配置了<GenerateAssemblyInfo>true</GenerateAssemblyInfo>,开启MSBuild自动替换版本号通配符的能力。
  • 你也可以直接在Azure流水线的编译命令中传入版本号,避免脚本修改csproj文件带来的异常,比如在dotnet publish或者MSBuild命令后添加参数:/p:AssemblyVersion=1.0.0.$(Build.BuildId) /p:ApplicationRevision=$(Build.BuildId),直接用流水线的构建ID作为修订号。
  • 修正脚本后先在本地用MSBuild手动编译项目,确认没有报错后再推送到流水线运行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 10:06:03