Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在ASP.NET MVC 4应用程序中打印版本号_C#_Asp.net Mvc - Fatal编程技术网

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

C# 在ASP.NET MVC 4应用程序中打印版本号,c#,asp.net-mvc,C#,Asp.net Mvc,我有一个ASP.NETMVC4应用程序。目前,我正在“应用程序”选项卡下的项目属性中设置应用程序的版本。从这里,我单击“装配信息…”按钮。到达后,我在“汇编版本”字段中输入了“1 0*” 我的问题是,如何在我的网页上显示这个值?目前,我正在尝试以下方法 @System.Reflection.Assembly.GetExecutingAssembly().GetName().Version.ToString() 不幸的是,它总是打印“0.0.0.0”。实际上,我希望它打印为1.0.0.xyz。我

我有一个ASP.NETMVC4应用程序。目前,我正在“应用程序”选项卡下的项目属性中设置应用程序的版本。从这里,我单击“装配信息…”按钮。到达后,我在“汇编版本”字段中输入了“1 0*”

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

@System.Reflection.Assembly.GetExecutingAssembly().GetName().Version.ToString()
不幸的是,它总是打印“0.0.0.0”。实际上,我希望它打印为1.0.0.xyz。我还想打印上次生成的日期/时间。然而,我不知道该怎么做


我做错了什么?

可以使用
AssemblyFileVersionAttribute
设置程序集版本,必须专门访问该属性

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

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

AssemblyFileVersionAttribute attr=typeof(MyController)。Assembly.GetCustomAttributes(typeof(AssemblyFileVersionAttribute),true)。OfType使此操作变得简单。

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

@ViewContext.Controller.GetType().Assembly.GetName().Version
大会日期:

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

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

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

当然,用您合适的MVC控制器名称替换MyController。

为此,我通常做
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))
用于检索日期


这将打印自
文件以来的实际发布日期。GetCreationTime()
将为您提供实际程序集dll首次在服务器上复制的日期

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

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

也可以在MVC5中使用。

如果您在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)
-->

产出如下:



你应该看看它是否能解决你的问题……这是一个很好的建议。谢谢,我遇到了这个问题。装配日期对我来说不合适。装配位置指向GAC中的一个文件,该文件已存在3年。
File.GetLastWriteTime
会更好吗?如何将其放入代码中。我的意思是,我应该简单地将它粘贴到cshtml文件中吗?
@ViewContext.Controller.GetType().Assembly.GetName().Version

请参阅下面的注释以获得正确的修改日期时间。