【问题标题】:Automatic versioning of web site projects in Team CityTeam City 中网站项目的自动版本控制
【发布时间】:2023-12-21 01:13:01
【问题描述】:

在我当前的客户中,我们有一些遗留的 ASP.Net 网站项目。我正在为我们的构建引入自动版本控制,并且想知道如何在 Team City 中的网站项目中最好地做到这一点?

我目前正在使用 Team City 的 %build.number% 变量(通过项目构建模板设置)作为构建的权威版本号。对于任何生成程序集的 .NET 项目,都可以轻松使用 Team City 中的“AssemblyInfo Patcher”构建功能,但这不适用于网站项目,因为它们不生成程序集。

那么,有什么建议吗?我已经在我的构建中使用 Powershell 和 psake,因此创建使用 %build.number% 的脚本不是问题,更多的是如何以“好的”方式将其注入网站项目。

【问题讨论】:

    标签: continuous-integration teamcity versioning web-site-project


    【解决方案1】:

    我尝试了几种解决方案,但最终使用了 Team City 在构建期间设置的依赖程序集的版本号。我在程序集中添加了一个类,它看起来像这样:

    公共类 VersionUtils { 私有只读 ILog _logger; public VersionUtils() { _logger = LogManager.GetLogger("VersionLogger"); } public string GetWebAppVerison() { string version = "unknown version"; var assembly = Assembly.GetAssembly(typeof(VersionUtils)); try { version = assembly.GetName().Version.ToString(); } catch(Exception ex) { _logger.Warn("Could not find or read version number from " + assembly.GetName(), ex); } return version; }

    【讨论】: