我有一个ASP.NET MVC 4应用程序。目前,我正在“应用程序”选项卡下的项目属性中设置应用程序的版本。从这里,我点击“装配信息...”按钮。到那里之后,我在“汇编版本”字段中输入了“1 0 0 *”。
我的问题是,如何在我的网页上显示此值?目前,我正在尝试以下
@System.Reflection.Assembly.GetExecutingAssembly().GetName().Version.ToString()
不幸的是,它总是打印“0.0.0.0”。实际上,我想打印1.0.0.xyz。我还想打印上次构建发生的日期/时间。但是,我不知道该怎么做。
我做错了什么?
答案 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;
}
答案 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)
-->