如何获取SharedAssemblyInfo.cs详情并在页面页脚展示
嘿,我来帮你搞定这个问题!要从SharedAssemblyInfo.cs里提取那些元信息并展示在页面页脚,咱们可以借助.NET的反射机制来实现,步骤很清晰:
1. 编写工具类读取程序集属性
首先,我们可以创建一个工具类,通过反射从程序集中读取SharedAssemblyInfo.cs里定义的各种属性,包括自定义的AssemblyDatabaseVersion:
using System.Reflection; using VersionInfo; // 对应你文件里引用的自定义属性命名空间 public static class AssemblyInfoHelper { // 获取程序集标题 public static string GetAssemblyTitle() { var titleAttr = Assembly.GetExecutingAssembly().GetCustomAttribute<AssemblyTitleAttribute>(); return titleAttr?.Title ?? "未定义标题"; } // 获取版权信息 public static string GetAssemblyCopyright() { var copyrightAttr = Assembly.GetExecutingAssembly().GetCustomAttribute<AssemblyCopyrightAttribute>(); return copyrightAttr?.Copyright ?? "未定义版权"; } // 获取程序集版本 public static string GetAssemblyVersion() { var assemblyVersion = Assembly.GetExecutingAssembly().GetName().Version; return assemblyVersion?.ToString() ?? "未定义版本"; } // 获取自定义的数据库版本 public static int GetDatabaseVersion() { var dbVersionAttr = Assembly.GetExecutingAssembly().GetCustomAttribute<AssemblyDatabaseVersionAttribute>(); return dbVersionAttr?.Version ?? 0; // 假设你的自定义属性有Version属性存储数值 } // 其他属性(比如Company、Description)都可以用类似方式获取 public static string GetAssemblyCompany() { var companyAttr = Assembly.GetExecutingAssembly().GetCustomAttribute<AssemblyCompanyAttribute>(); return companyAttr?.Company ?? "未定义公司"; } }
2. 在页脚展示这些信息
接下来根据你的项目类型,把读取到的信息展示在页脚:
如果是ASP.NET MVC/Razor Pages项目
在布局页(比如_Layout.cshtml)的页脚区域,直接调用工具类的方法:
<footer class="footer"> <div class="container"> <p> @AssemblyInfoHelper.GetAssemblyTitle() | @AssemblyInfoHelper.GetAssemblyCompany() | 版权:@AssemblyInfoHelper.GetAssemblyCopyright() | 版本:@AssemblyInfoHelper.GetAssemblyVersion() | DB版本:@AssemblyInfoHelper.GetDatabaseVersion() </p> </div> </footer>
注意要在视图里引入工具类的命名空间,比如在布局页顶部加@using 你的工具类命名空间。
如果是WinForms/WPF项目
在窗体的加载事件或者初始化方法里,把信息赋值给页脚的控件(比如Label):
private void MainForm_Load(object sender, EventArgs e) { footerLabel.Text = $"{AssemblyInfoHelper.GetAssemblyTitle()} | " + $"版权:{AssemblyInfoHelper.GetAssemblyCopyright()} | " + $"版本:{AssemblyInfoHelper.GetAssemblyVersion()} | " + $"DB版本:{AssemblyInfoHelper.GetDatabaseVersion()}"; }
小提示
- 如果是ASP.NET Core项目,可能需要用
Assembly.GetEntryAssembly()或者typeof(Program).Assembly来获取程序集,确保拿到正确的包含SharedAssemblyInfo.cs的程序集。 - 自定义的
AssemblyDatabaseVersionAttribute需要确保它的定义是可被反射识别的,比如它的类应该标记[AttributeUsage(AttributeTargets.Assembly)],并且有对应的构造函数和属性来存储版本值。
内容的提问来源于stack exchange,提问作者nhoyti
相关产品推荐
相关产品推荐

