我一直对我的持续集成项目,这是获得TeamCity建立我的应用程序时,自动更改所有组件的版本号,然后创建一个安装程序的下一步。需要的TeamCity +维克斯+的MSBuild工作流程的建议
首先给出一些背景:
我一直在运行TeamCity的成功,在过去的几个月里,和它建立我的配置和运行我的NUnit和NCover测试就好了。
我花了一点时间研究安装程序 - 我一直恨InstallShield和从未考虑过为我的当前应用程序。我喜欢NSIS,但碰巧遇到了WiX。我对MS Installer体系结构没有任何深入的了解,我知道这对于复杂的项目很危险,所以在某些时候我需要了解更多。然而,在涉及SO问题,搜索网页和阅读博客几天后,我有一个成功构建,安装,运行应用程序并清除所有内容的WiX项目。大!
我也想有TeamCity的构建配置自动更新所有的我的程序集的版本号。我可以通过在我的开发机器上安装MSBuild Community Tasks并创建一个使用BeforeBuild目标和FileUpdate任务来更改版本号的部署配置来模拟此功能。这工作正常,除了在我的开发机器上,我没有build_vcs_number_1环境变量来替代。
所以这就是现在的我 - 我需要做的TeamCity更新,而它确实有build_vcs_number_1环境变量,我无法弄清楚如何在维克斯的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>
访问的系统环境变量。
有没有人有其他建议?
我只是想知道你是否仍然以这种方式工作。我曾经在创建这个问题的同一时间做类似的事情,但后来Git和NuGet,我慢慢迁移到使用NuGet作为我的主要依赖管理方式。 TeamCity当然现在有一个AssemblyInfo补丁程序,并且在下一个版本中,它使它能够完成MSBuild社区任务所能做的一切。 – 2015-06-24 10:22:54
我仍然以这种方式工作,对我来说它仍然是一个很好的解决方案,但随着我获得更多带宽,我一定会考虑更改。我想离开MSBuild社区任务,因为我必须修改每个新程序集,这很不方便。 – Dave 2015-06-24 12:11:50