使用Razor/MVC 3将程序集版本输入网页时出现问题

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (13)

我在_Layout.cshtml文件的页脚中使用了以下代码,将AssemblyInfo版本数据放入我的MVC3网站中每个页面的页脚。然而:

@System.Reflection.Assembly.GetExecutingAssembly().GetName().Version.ToString()

只需在页脚输出:

Revision 0.0.0.0

当我修改视图以使用以下命令显示“执行装配”的所有装配信息时

@System.Reflection.Assembly.GetExecutingAssembly().GetName().ToString()

其中输出以下内容:

Revision App_Web__layout.cshtml.639c3968.hlogy75x, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null

这表明“执行装配”不是我的主要应用程序,它是视图本身。

我如何获得ACTUAL应用程序的汇编信息,而不仅仅是单个视图?

提问于
用户回答回答于

cshtml/vbhtml是动态编译到程序集的。

@typeof(YourApplicationNamespace.MvcApplication).Assembly.GetName().Version

这个怎么样?

用户回答回答于

使用这对我有用:

    public static HtmlString ApplicationVersion(this HtmlHelper helper)
    {
        var asm = System.Reflection.Assembly.GetExecutingAssembly();
        var version = asm.GetName().Version;
        var product = asm.GetCustomAttributes(typeof(System.Reflection.AssemblyProductAttribute), true).FirstOrDefault() as System.Reflection.AssemblyProductAttribute;

        if (version != null && product != null)
        {
            return new HtmlString(string.Format("<span>{0} v{1}.{2}.{3} ({4})</span>", product.Product, version.Major, version.Minor, version.Build, version.Revision));
        }
        else
        {
            return new HtmlString("");
        }

    }

扫码关注云+社区