【问题标题】:ASP.Net Version/Build NumberASP.Net 版本/内部版本号
【发布时间】:2016-10-14 16:32:28
【问题描述】:

我有一个 ASP.Net (.net 3.5/c#),我想显示版本号/内部版本号和日期。控制这种情况的最佳方法是什么?是否可以在构建时自动增加数字?

版本号和内部版本号的标准是什么?

我正在使用 VS 2008 我如何获取数据并分配给一个字符串值以便我可以显示在网页的页脚中?

【问题讨论】:

    标签: c# .net asp.net


    【解决方案1】:

    如果您使用的是 Web 应用程序项目 - 您可以这样做...

    Assembly web = Assembly.Load("App_Code");
    AssemblyName webName = web.GetName();
    
    string myVersion = webName.Version.ToString();
    

    如果您使用的是网站项目 - 几乎相同...

    Assembly web = Assembly.GetExecutingAssembly();
    AssemblyName webName = web.GetName();
    
    string myVersion = webName.Version.ToString();
    

    【讨论】:

    • 我正在尝试在剃刀视图中执行此操作(我知道我不应该,但它是共享布局)并且它看不到程序集...
    • @Worthy7,对于 Razor 视图,您可以在 Application_Start() 事件 (global.asax) 中的 Application 变量中设置版本,如下所示:Application["Version"] = System.Reflection.Assembly .GetExecutingAssembly().GetName().Version.ToString();。然后在 Razor 视图中检索它,如下所示:

      version @Context.Application["Version"].ToString()

    【解决方案2】:

    您可以设置版本号的前两部分,并为编译器留下通配符以自动完成后两部分,方法是像这样编辑GlobalAssemblyInfo.cs

    [assembly:AssemblyFileVersion("1.0.*")]
    

    它会自动完成最后两部分,其中包含自 2000 年 1 月 1 日以来的天数和自午夜以来的秒数。这可能有助于查询的第二部分显示版本的构建日期/时间。

    【讨论】:

    • 酷!那么你可以得到版本:System.Reflection.Assembly.GetExecutingAssembly().GetName().Version.ToString()
    • 自动完成版本的最后一部分(默认修订号)是自当地时间午夜以来的秒数(不考虑夏令时的时区调整)除以 2。取自这里msdn.microsoft.com/en-us/library/…