在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包使得这个简单。