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

JQu*_*ile 64 c# asp.net-mvc

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

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

@System.Reflection.Assembly.GetExecutingAssembly().GetName().Version.ToString()
Run Code Online (Sandbox Code Playgroud)

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

我究竟做错了什么?

Dar*_*rov 122

要打印已在其中定义呈现此视图的控制器的程序集的版本号,请执行以下操作:

@ViewContext.Controller.GetType().Assembly.GetName().Version
Run Code Online (Sandbox Code Playgroud)

并为集会日期:

@File.GetCreationTime(ViewContext.Controller.GetType().Assembly.Location)
Run Code Online (Sandbox Code Playgroud)

  • 集会日期对我不起作用.程序集位置指向GAC中的文件,该文件已有3年历史.`File.GetLastWriteTime`会更好吗? (2认同)

fre*_*nky 21

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

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

而不是内部视图,你只需要打电话:

@Html.AssemblyVersion()
Run Code Online (Sandbox Code Playgroud)


小智 19

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

@String.Format(
    "{0:dddd, MMMM d, yyyy HH:mm:ss}", 
    File.GetLastWriteTime(ViewContext.Controller.GetType().Assembly.Location))
Run Code Online (Sandbox Code Playgroud)

用于检索日期.

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


luk*_*yer 5

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

@File.GetLastWriteTime(@System.Reflection.Assembly.GetExecutingAssembly().Location)
Run Code Online (Sandbox Code Playgroud)

也可以在MVC5中使用。