如何在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
相关产品推荐
相关产品推荐

