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

我有一个ASP.NET MVC 4应用程序。 目前,我在“应用程序”选项卡下的项目属性中设置应用程序的版本。 从这里,我点击“Assembly Information …”button。 一旦出现,我在“Assembly version”字段中input“1 0 0 *”。

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

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

不幸的是,它总是打印“0.0.0.0”。 实际上,我想打印1.0.0.xyz。 我也想打印上次构build发生的date/时间。 不过,我不知道该怎么做。

我究竟做错了什么?

要打印显示该视图的控制器所定义的程序集的版本号:

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

并为会议date:

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

我通常会为此目的制作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() 

如果你正在生产服务器上发布你的应用程序,我会推荐使用类似的东西

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

检索date。

这将打印实际的发布date,因为File.GetCreationTime()会给你实际的程序集dll 第一次在服务器上复制的date。

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

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

当然用你合适的MVC控制器名称replaceMyController

部署后正确工作的解决scheme修改date:

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

也可以用在MVC5中。

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

 AssemblyFileVersionAttribute attr = typeof(MyController).Assembly.GetCustomAttributes(typeof(AssemblyFileVersionAttribute), true).OfType<AssemblyFileVersionAttribute>().FirstOrDefault(); if (attr != null) { return attr.Version; } 

MvcDiagnostics Nuget包使得这个简单。