【问题标题】: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;
}