如何在 ASP.Net MVC - 5 应用程序中显示版本号并自动递增

Posted

技术标签:

【中文标题】如何在 ASP.Net MVC - 5 应用程序中显示版本号并自动递增【英文标题】:How to display version number and auto increment it in ASP.Net MVC - 5 Application 【发布时间】:2017-06-01 18:37:32 【问题描述】:

我正在开发 ASP.Net MVC Web 应用程序。因此,我在 localhost 中进行了更改,然后运行并测试它。发布我签入我的代码的帖子。从主服务器 TEAMCITY 构建项目并进行更改。我是初学者,所以我不知道这一切是如何发生的。另外,我的经理要我在website footer 上显示版本号。因此,我查看了此链接 Add Version Number 并进行了以下更改。

cshtml 文件

     var version = @ViewContext.Controller.GetType().Assembly.GetName().Version;
     <p>Version @version</p>

     //and in AssemblyInfo.cs file I added
[assembly: AssemblyVersion("10.999.7.9")]
[assembly: AssemblyFileVersion("10.999.999.999")]

现在在我的本地主机中,我看到的只是 10.999.7.9

然后我发现一个链接说我需要使用“*”来自动增加版本号。此链接Increment the Version Number

但是现在我的经理告诉我恢复 AssemblyInfo.cs 文件中的所有更改并将其保留为原来的

[assembly: AssemblyVersion("10.999.999.999")]

[assembly: AssemblyFileVersion("10.999.999.999")]

我正在检查的最终更改

[assembly: AssemblyVersion("10.999.999.999")] // BY DEFAULT
[assembly: AssemblyFileVersion("10.999.999.999")]  // BY DEFAULT

保持cshtml文件的变化不变

cshtml

 var version = @ViewContext.Controller.GetType().Assembly.GetName().Version;
         <p>Version @version</p>

是这样吗?显然,team city 会覆盖 AssemblyInfo.cs 信息并更新版本号。我在这里完全糊涂了。我的意思是我不需要使用* 来自动增加版本号。此外,团队城市如何覆盖 assembly.cs 文件,以便下面的代码具有正确的版本号。

var version = @ViewContext.Controller.GetType().Assembly.GetName().Version;

是我遗漏了什么,还是我的经理遗漏了一些细节而他错了。为了获得正确的版本号并自动递增,我是否也需要在 Assembly.cs 文件中进行更改并检查 assemblyInfo.cs 文件?请指导我。

【问题讨论】:

【参考方案1】:

您想在 TeamCity 中设置一个名为 Assembly Patching 的构建功能。

这是一个相关的link

TeamCity 将在构建过程中替换程序集版本,并在构建完成后恢复它,但编译后的版本将是 TeamCity 所说的任何版本。

然后在我的 Global.asax 中,我在 Application_Start 中有这段代码

        Version version = Assembly.GetExecutingAssembly().GetName().Version;
        Application["Version"] = String.Format("0.1", version.Major, version.Minor);

然后在我的 _Layout.cshtml 中有

        <footer>
            &copy; @DateTime.Now.Year
            Version: @HttpContext.Current.Application["Version"]
        </footer>

【讨论】:

以上是关于如何在 ASP.Net MVC - 5 应用程序中显示版本号并自动递增的主要内容,如果未能解决你的问题,请参考以下文章

如何在 ASP.Net MVC - 5 应用程序中显示版本号并自动递增

如何使用 mvc 6、asp.net 5 注册全局过滤器

如何在 ASP.NET 5 MVC 6 (vNext) 中定义 Identity 的密码规则?

如何在 Asp.Net 5 (MVC 6) 中使用实体框架 6.x

如何在asp.net mvc 5身份中的授权属性中使用动态角色

如何将 Web API 添加到现有的 ASP.NET MVC (5) Web 应用程序项目中?