在ASP.NET MVC 4应用程序中打印版本号

时间:2012-10-02 16:20:26

标签: c# asp.net-mvc

我有一个ASP.NET MVC 4应用程序。目前,我正在“应用程序”选项卡下的项目属性中设置应用程序的版本。从这里,我点击“装配信息...”按钮。到那里之后,我在“汇编版本”字段中输入了“1 0 0 *”。

我的问题是,如何在我的网页上显示此值?目前,我正在尝试以下

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

不幸的是,它总是打印“0.0.0.0”。实际上,我想打印1.0.0.xyz。我还想打印上次构建发生的日期/时间。但是,我不知道该怎么做。

我做错了什么?

7 个答案:

答案 0 :(得分:119)

要打印已在其中定义呈现此视图的控制器的程序集的版本号:

@ViewContext.Controller.GetType().Assembly.GetName().Version

和汇编日期:

@File.GetCreationTime(ViewContext.Controller.GetType().Assembly.Location)

答案 1 :(得分:21)

我通常会为此目的进行HtmlHelper扩展。像这样:

public static class HtmlHelperExtensions
{
    public static IHtmlString AssemblyVersion(this HtmlHelper helper)
    {
        var version = Assembly.GetExecutingAssembly().GetName().Version.ToString();
        return MvcHtmlString.Create(version);
    }
}

除了内部视图,您只需致电:

@Html.AssemblyVersion()

答案 2 :(得分:18)

如果您要在生产服务器上发布应用程序,我建议使用类似

的内容
@String.Format(
    "{0:dddd, MMMM d, yyyy HH:mm:ss}", 
    File.GetLastWriteTime(ViewContext.Controller.GetType().Assembly.Location))

用于检索日期。

这将打印实际的发布日期,因为File.GetCreationTime()将为您提供在服务器上复制实际程序集dll 优先的日期。

答案 3 :(得分:3)

部署后正确修改日期的工作解决方案:

@File.GetLastWriteTime(@System.Reflection.Assembly.GetExecutingAssembly().Location)

也可以在MVC5中使用。

答案 4 :(得分:2)

这将打印AssemblyInfo.cs文件中列出的当前版本号,以便在ASP.NET MVC视图中打印:

@(typeof(MyController).Assembly.GetName().Version.ToString())

当然使用适当的MVC控制器名称替换MyController

答案 5 :(得分:0)

您的程序集版本可以使用AssemblyFileVersionAttribute设置,必须专门访问。

AssemblyFileVersionAttribute attr = typeof(MyController).Assembly.GetCustomAttributes(typeof(AssemblyFileVersionAttribute), true).OfType<AssemblyFileVersionAttribute>().FirstOrDefault();

if (attr != null)
{
    return attr.Version;
}

MvcDiagnostics Nuget package使这很简单。

答案 6 :(得分:0)

如果您在Razor视图中需要此功能,这对我有用。它需要With pvttbl .RowAxisLayout xlTabularRow .RepeatAllLabels xlRepeatLabels ' defined once per pivottable: .ColumnGrand = False .RowGrand = False ' use RowFields only: For Each campos In .RowFields ' either this: campos.Subtotals(1) = True ' Automatic on (= all other off) campos.Subtotals(1) = False ' Automatic also off ' or that (all 12 off): 'campos.Subtotals = Array(False, False, False, False, False, False, False, False, False, False, False, False) Next campos End With 前缀才能为我工作

System.IO.*

输出以下内容:

<!--
Version @System.Diagnostics.FileVersionInfo.GetVersionInfo(typeof(YourNamespace.Program).Assembly.Location).ProductVersion
Last deployed on @System.IO.File.GetCreationTime(typeof(YourNamespace.Program).Assembly.Location)
-->