68

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

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

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

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

我究竟做错了什么?

4

7 回答 7

127

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

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

以及组装日期:

@File.GetCreationTime(ViewContext.Controller.GetType().Assembly.Location)
于 2012-10-02T16:26:36.267 回答
22

我通常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()
于 2012-10-02T19:54:56.273 回答
22

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

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

用于检索日期。

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

于 2014-05-07T07:44:12.600 回答
5

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

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

也可以在 MVC5 中使用。

于 2017-04-07T10:57:14.270 回答
4

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

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

当然替换MyController为您适当的 MVC 控制器名称。

于 2012-10-02T16:27:41.137 回答
2

如果您在 Razor 视图中需要它,这对我有用。它需要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)
-->

输出以下内容:

<!--
Version 1.0.0
Last deployed on 04/19/2019 1:36:24 PM
-->
于 2019-04-19T18:58:18.400 回答
1

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

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

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

MvcDiagnostics Nuget 包使这变得简单。

于 2012-10-02T16:25:44.723 回答