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

如何将GitVersion版本信息嵌入C#.NET应用程序二进制文件?

给C# .NET应用集成GitVersion实现自动版本更新

1. 安装GitVersion

  • 全局安装.NET工具(适配本地开发场景):
    dotnet tool install --global GitVersion.Tool
    
  • 或给项目添加GitVersion.MsBuild NuGet包(适合团队统一配置):
    dotnet add package GitVersion.MsBuild
    

2. 生成GitVersion配置文件

在Git仓库根目录执行初始化命令,生成GitVersion.yml配置文件:

dotnet-gitversion init

可根据项目分支策略、版本规则修改该文件,比如调整预发布版本格式、主分支匹配规则等。

3. 构建时自动注入版本信息

方式一:MsBuild包自动处理

若安装了GitVersion.MsBuild,构建过程中GitVersion会自动计算版本,并注入以下MSBuild属性:

  • GitVersion_SemVer:完整语义化版本(如1.2.3-beta.1+abc123)
  • GitVersion_MajorMinorPatch:主版本.次版本.修订号(如1.2.3)
  • GitVersion_InformationalVersion:包含元数据的详细版本

项目会自动用这些值填充Version、AssemblyVersion等属性,无需额外配置。

方式二:全局工具手动配置MSBuild目标

若使用全局工具,需在.csproj中添加目标,调用GitVersion并设置版本属性:

<Target Name="InjectGitVersion" BeforeTargets="CoreCompile">
  <Exec Command="dotnet-gitversion /output buildserver" ConsoleToMsBuild="true" />
  <PropertyGroup>
    <Version>$(GitVersion_SemVer)</Version>
    <AssemblyVersion>$(GitVersion_Major).$(GitVersion_Minor).$(GitVersion_Patch).0</AssemblyVersion>
    <FileVersion>$(GitVersion_Major).$(GitVersion_Minor).$(GitVersion_Patch).$(GitVersion_BuildMetaData)</FileVersion>
    <InformationalVersion>$(GitVersion_InformationalVersion)</InformationalVersion>
  </PropertyGroup>
</Target>

4. 实现-V选项显示版本

在应用入口(如Program.cs)中添加命令行参数判断,读取程序集版本信息:

using System.Reflection;

var args = Environment.GetCommandLineArgs();
if (args.Contains("-V") || args.Contains("--version"))
{
    var assembly = Assembly.GetExecutingAssembly();
    var assemblyVersion = assembly.GetName().Version?.ToString() ?? "未知版本";
    var infoVersion = assembly.GetCustomAttribute<AssemblyInformationalVersionAttribute>()?.InformationalVersion;

    Console.WriteLine($"版本: {assemblyVersion}");
    if (!string.IsNullOrWhiteSpace(infoVersion))
    {
        Console.WriteLine($"详细版本: {infoVersion}");
    }
    return 0;
}

// 应用核心逻辑...

5. 验证效果

  • 执行构建:dotnet build
  • 运行应用查看版本:dotnet run -- -V
    此时会输出GitVersion根据Git提交记录计算出的当前版本,每次构建都会自动更新版本值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 22:25:17