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

命令行构建.NET Core解决方案时AssemblyFileVersion未正确设置求助

问题分析与解决方法

你遇到的问题是通过MSBuild命令行传递AssemblyVersion后,程序集版本更新正常,但文件版本仍为1.0.0.0,这大概率是以下几个原因导致的,对应解决方法如下:

1. AssemblyInfoFiles项未正确配置

你的BeforeBuild目标中使用了@(AssemblyInfoFiles)指定要修改的AssemblyInfo文件,但如果项目文件里没有定义这个项集合,AssemblyInfo任务就找不到需要更新的文件,自然不会修改AssemblyFileVersion。

解决方法:
在项目文件中添加ItemGroup,明确指定所有需要更新的AssemblyInfo.cs路径:

<ItemGroup>
  <!-- 单个项目的情况 -->
  <AssemblyInfoFiles Include="Properties\AssemblyInfo.cs" />
  <!-- 如果是解决方案包含多个项目,需要逐个添加 -->
  <AssemblyInfoFiles Include="..\Project1\Properties\AssemblyInfo.cs" />
  <AssemblyInfoFiles Include="..\Project2\Properties\AssemblyInfo.cs" />
</ItemGroup>

2. AssemblyInfo任务未启用自动插入属性

如果你的AssemblyInfo.cs文件中原本没有AssemblyFileVersion属性,默认情况下AssemblyInfo任务不会自动添加该属性,只会修改已存在的属性。

解决方法:
在AssemblyInfo任务中添加InsertAttributes="true"参数,让任务自动插入缺失的属性:

<AssemblyInfo AssemblyInfoFiles="@(AssemblyInfoFiles)" 
              AssemblyCopyright="$(AssemblyCopyright)" 
              AssemblyVersion="$(AssemblyVersion)"
              AssemblyFileVersion="$(AssemblyVersion)"
              InsertAttributes="true"
              >
</AssemblyInfo>

3. .NET Core/.NET 5+项目版本机制差异

如果你的项目是.NET Core或更高版本,这类项目默认通过项目文件的PropertyGroup控制版本,而不是手动修改AssemblyInfo.cs,此时你的BeforeBuild目标可能不会生效。

解决方法:
直接在MSBuild命令行中同时传递FileVersion属性,无需依赖AssemblyInfo任务:

& $msbuild "D:\Jenkins\workspace\Snarks\KPS.MAX graphics\KPS.MAX graphics - Compile\MainProj.sln" -r -m:7 -t:Build "-property:Configuration=Release;Platform=Any CPU;AssemblyVersion=1.0.33.174;FileVersion=1.0.33.174"

同时可以移除项目文件中的BeforeBuild目标,避免冲突。

4. 查看MSBuild详细日志排查

执行MSBuild命令时添加/v:d参数获取详细日志,查看BeforeBuild目标的执行情况:

  • 确认Message输出是否正常,验证$(AssemblyVersion)参数是否正确传递
  • 查看AssemblyInfo任务的执行日志,是否有文件未找到、属性未修改等错误信息

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 07:48:14