如何在 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>
© @DateTime.Now.Year
Version: @HttpContext.Current.Application["Version"]
</footer>
【讨论】:
以上是关于如何在 ASP.Net MVC - 5 应用程序中显示版本号并自动递增的主要内容,如果未能解决你的问题,请参考以下文章
如何在 ASP.Net MVC - 5 应用程序中显示版本号并自动递增
如何在 ASP.NET 5 MVC 6 (vNext) 中定义 Identity 的密码规则?
如何在 Asp.Net 5 (MVC 6) 中使用实体框架 6.x