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

如何在ASP.NET Framework 4.8项目中访问GitVersion.MSBuild生成的AssemblyInfo

解决方案

1. 让GitVersion生成的文件被Web Forms识别

GitVersion.MSBuild默认会在项目根目录生成版本相关代码文件,但你的Web Forms项目没有常规编译流程,得把生成的GitVersionInformation.cs(或AssemblyVersion.cs里的对应类)放到App_Code目录下——Web Forms会自动编译这个目录里的代码文件,不用手动编译。

要是默认生成路径不对,你可以通过GitVersion.yml配置文件指定输出目录:

output-file: App_Code/GitVersionInformation.cs

2. 直接调用静态类属性获取版本信息

GitVersionInformation是个静态类,里面直接暴露了所有版本相关的静态属性,提交哈希对应的是Sha,不用绕AssemblyInfo.GetType()这种复杂方式。在你的代码后置文件里直接用就行:

// 比如Site.Master.cs的Page_Load方法里
protected void Page_Load(object sender, EventArgs e)
{
    // 获取完整提交哈希
    string fullCommitHash = GitVersionInformation.Sha;
    // 一般显示短哈希(前7位)就行
    string shortCommitHash = fullCommitHash.Substring(0, 7);
    // 把版本信息绑定到页脚的控件,比如Label
    lblFooter.Text = $"版本: {GitVersionInformation.FullSemVer} | 提交: {shortCommitHash}";
}

3. 处理命名空间问题

如果生成的GitVersionInformation.cs里带了命名空间,记得在代码后置文件顶部加using:

using YourGeneratedNamespace; // 替换成文件里实际的命名空间

4. 确认生成的文件内容

要是出现编译错误,先打开App_Code/GitVersionInformation.cs看看类和属性是不是存在,典型的生成内容大概是这样:

internal static class GitVersionInformation
{
    public static string Major => "1";
    public static string Minor => "0";
    public static string Patch => "0";
    public static string Sha => "a1b2c3d4e5f6g7h8i9j0";
    public static string FullSemVer => "1.0.0";
    // 其他版本属性...
}

5. 确保部署时生成文件

如果你的部署流程没触发MSBuild任务,手动执行GitVersion命令生成文件就行:

dotnet gitversion /output file /outputfile App_Code/GitVersionInformation.cs

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 12:52:46