我一直在进行我的持续集成项目的下一步,即让TeamCity构建我的应用程序,自动更改所有程序集的版本号,然后创建一个安装程序。
先说一点背景:
在过去的几个月里,我一直在成功运行 TeamCity,它构建了我的配置并很好地运行了我的 NUnit 和 NCover 测试。
我花了一点时间研究安装程序——我一直讨厌 InstallShield,并且从未考虑将它用于我当前的应用程序。我喜欢 NSIS,但后来碰巧遇到了WiX。我对 MS Installer 架构没有任何深入的了解,我知道这对于复杂的项目是危险的,所以在某些时候我需要了解更多关于它的信息。然而,经过几天的 SO 问题、谷歌搜索和阅读博客后,我有一个 WiX 项目,它成功构建、安装、应用程序运行,并且一切都卸载干净。伟大的!
我还想让 TeamCity 构建配置自动更新我所有程序集的版本号。我能够通过在我的开发机器上安装MSBuild 社区任务并创建使用BeforeBuild目标和FileUpdate任务来更改版本号的部署配置来模拟此功能。这可以正常工作,除了在我的开发机器上,我没有build_vcs_number_1环境变量可以替代。
这就是我现在所处的位置——我需要让 TeamCity 进行更新,虽然它确实有build_vcs_number_1环境变量,但我不知道如何获得 WiX MSBuild 社区任务。
我读过的一篇文章建议将 MSBuild 目标签入 SVN 文件夹。我有一个这样的 /extlib 文件夹,所以我的 TeamCity VCS 签出规则如下所示:
+:tags/2010-10-15=>src
+:extlib=>extlib
如何从环境变量访问 extlib? 当我运行构建时,TeamCity 抱怨(并且正确地)它找不到c:\wix30\MSBuildCommunityTasks
. 实际文件夹是C:\TeamCity\buildAgent\work\3e073d2b74226378\extlib\wix30\MSBuildCommunityTasks
. 该文件夹是自动生成的,因为我正在执行服务器端结帐,因此必须有一些 TeamCity 设置的环境变量可以用来获取正确的路径。
我应该注意的一件事是,我已经进入了构建配置 -> 属性和环境变量,并找到了包含所有现有变量的不直观的下拉列表,并且没有看到任何听起来像指向工作路径的变量的东西。
我能想到的一种可能的解决方法是在构建服务器上安装 MSBuild 社区任务,然后我可以创建一个可以通过<WixToolPath>
.
有人有其他建议吗?