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

如何在C#、VB、C++代码库间共享AssemblyInfo版本实现单点更新?

跨语言Visual Studio解决方案共享AssemblyVersion的实现方案

完全可以通过共享版本配置文件+MSBuild/预处理器机制实现单点修改同步所有项目的版本号,下面是针对C#、VB、C++的具体操作步骤:

核心思路

用一个统一的版本定义文件存储版本号,每个项目通过VS原生的MSBuild机制或预处理器宏读取这个文件的值,自动生成对应语言的AssemblyVersion标记,避开语法差异的问题。


1. 创建共享版本配置文件

在所有解决方案的共同父目录下(比如新建Shared文件夹),创建VersionInfo.props文件,内容如下:

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <!-- 这里只需要修改这一行就能同步所有项目版本 -->
    <AssemblyVersion>1.2.3.4</AssemblyVersion>
    <FileVersion>$(AssemblyVersion)</FileVersion>
  </PropertyGroup>
</Project>

2. C#项目配置

推荐方式:用MSBuild自动生成AssemblyInfo

这种方式不需要手动维护AssemblyInfo.cs里的版本号:

  • 右键C#项目 → 卸载项目 → 编辑.csproj文件
  • 在文件合适位置添加导入语句,指向共享的VersionInfo.props:
    <Import Project="..\Shared\VersionInfo.props" />
    
  • 找到项目里的PropertyGroup节点,添加或修改以下配置:
    <PropertyGroup>
      <GenerateAssemblyInfo>true</GenerateAssemblyInfo>
      <AssemblyVersion>$(AssemblyVersion)</AssemblyVersion>
      <FileVersion>$(FileVersion)</FileVersion>
    </PropertyGroup>
    
  • 保存后重新加载项目,注释掉原来AssemblyInfo.cs里的AssemblyVersion、FileVersion行即可避免冲突。

备选:预处理器宏方式

如果坚持手动维护AssemblyInfo.cs:

  • 在.csproj里添加预处理器定义:
    <PropertyGroup>
      <DefineConstants>ASSEMBLY_VERSION="$(AssemblyVersion)";$(DefineConstants)</DefineConstants>
    </PropertyGroup>
    
  • 然后在AssemblyInfo.cs里替换版本行:
    [assembly: AssemblyVersion(ASSEMBLY_VERSION)]
    

3. Visual Basic项目配置

优先用MSBuild自动生成,操作逻辑和C#一致:

  • 右键VB项目 → 卸载项目 → 编辑.vbproj文件
  • 导入共享配置文件:
    <Import Project="..\Shared\VersionInfo.props" />
    
  • 添加或修改自动生成配置:
    <PropertyGroup>
      <GenerateAssemblyInfo>true</GenerateAssemblyInfo>
      <AssemblyVersion>$(AssemblyVersion)</AssemblyVersion>
      <FileVersion>$(FileVersion)</FileVersion>
    </PropertyGroup>
    
  • 重新加载项目后,注释掉AssemblyInfo.vb里原有的版本标记即可。

备选:预处理器宏方式

  • 在.vbproj里添加预处理器定义:
    <PropertyGroup>
      <DefineConstants>ASSEMBLY_VERSION="$(AssemblyVersion)";$(DefineConstants)</DefineConstants>
    </PropertyGroup>
    
  • 修改AssemblyInfo.vb:
    <Assembly: AssemblyVersion(ASSEMBLY_VERSION)>
    

4. C++项目(可选)

C++可以通过预处理器宏实现同步:

  • 右键C++项目 → 卸载项目 → 编辑.vcxproj文件
  • 导入共享配置文件:
    <Import Project="..\Shared\VersionInfo.props" />
    
  • 找到ClCompile节点下的PreprocessorDefinitions,添加版本宏:
    <ClCompile>
      <PreprocessorDefinitions>ASSEMBLY_VERSION="$(AssemblyVersion)";%(PreprocessorDefinitions)</PreprocessorDefinitions>
    </ClCompile>
    
  • 在AssemblyInfo.cpp里替换版本行:
    [assembly:AssemblyVersionAttribute(ASSEMBLY_VERSION)];
    

优势说明

这种方案完全依赖VS原生机制,不需要额外工具,只需要修改VersionInfo.props里的版本号,所有关联项目都会自动同步版本信息,彻底解决不同语言AssemblyInfo语法差异的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 16:10:36