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

如何在.NET Standard 2.0类库项目中为程序集输出文件名追加版本号

问题原因

直接在VS项目属性面板的「程序集名称」配置项中引用$(AssemblyVersion)不生效,核心是MSBuild的属性求值顺序导致的:AssemblyName属性的默认求值时机远早于AssemblyVersion的赋值时机,当你在属性面板配置$(MSBuildProjectName)$(AssemblyVersion)时,$(AssemblyVersion)还是空值,自然无法拼接出预期的文件名。

实现方案

不要直接在属性面板的输入框修改配置,直接编辑类库的.csproj项目文件实现,有两种通用方案可选:

  • 方案1:直接在属性赋值阶段拼接(仅适用于版本号直接写在csproj中的场景)
    右键项目选择「编辑项目文件」,在<Project>根节点下新增PropertyGroup节点,注意AssemblyVersion必须写在AssemblyName之前,保证求值顺序:

    <PropertyGroup>
      <!-- 替换成你实际的版本号 -->
      <AssemblyVersion>2.1.3.0</AssemblyVersion>
      <AssemblyName>$(MSBuildProjectName)$(AssemblyVersion)</AssemblyName>
    </PropertyGroup>
    

    这个方案的局限是:如果你的AssemblyVersion定义在传统的Properties/AssemblyInfo.cs文件中,MSBuild在处理csproj属性阶段还没读取该文件的内容,依然拿不到版本号值。

  • 方案2:编译后重命名输出文件(全场景兼容,推荐)
    不管你的版本号写在csproj还是AssemblyInfo.cs中都能正常生效,把下面的Target节点加到csproj的<Project>根节点下,和PropertyGroup、ItemGroup同级即可:

    <Target Name="AppendVersionToOutputFileName" AfterTargets="Build">
      <!-- 重命名主dll文件 -->
      <Move
        SourceFiles="$(OutputPath)$(AssemblyName).dll"
        DestinationFiles="$(OutputPath)$(AssemblyName)$(AssemblyVersion).dll"
        Condition="Exists('$(OutputPath)$(AssemblyName).dll')" />
      <!-- 不需要重命名xml注释、pdb文件的话可以删掉下面两段 -->
      <Move
        SourceFiles="$(OutputPath)$(AssemblyName).xml"
        DestinationFiles="$(OutputPath)$(AssemblyName)$(AssemblyVersion).xml"
        Condition="Exists('$(OutputPath)$(AssemblyName).xml')" />
      <Move
        SourceFiles="$(OutputPath)$(AssemblyName).pdb"
        DestinationFiles="$(OutputPath)$(AssemblyName)$(AssemblyVersion).pdb"
        Condition="Exists('$(OutputPath)$(AssemblyName).pdb')" />
    </Target>
    
注意事项
  • 配置完成后先执行「清理解决方案」,再重新生成项目,避免旧缓存文件导致配置不生效
  • 如果不需要完整四段版本号,可以用MSBuild内置的分段版本变量拼接,比如$(VersionMajor).$(VersionMinor)就只会保留主次版本号,示例:$(MSBuildProjectName).$(VersionMajor).$(VersionMinor)
  • 如果解决方案里有其他项目引用这个类库,优先选方案2,方案1直接修改AssemblyName可能导致VS的项目引用路径识别异常

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.02 05:21:46