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

如何获取SharedAssemblyInfo.cs详情并在页面页脚展示

如何获取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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 08:50:08