如何设置Team City以使用web.config提取单独的repo并在尝试构建之前将其复制到已检出的主项目仓库?

时间:2012-03-05 19:39:43

标签: asp.net mercurial continuous-integration teamcity

我正在尝试在我的项目中为CI设置Team City。我们目前有9名开发人员在使用该项目并使用Mercurial进行源代码管理。现在所有web.config文件都在主项目repo中被忽略,web.config文件位于一个单独的repo中,这样我们就不必使用十几个转换。

如何配置Team City / MS Build,以便我可以检查两个repos(到目前为止这个工作)然后更新repos并在执行构建之前将web.config复制到主项目文件夹?

2 个答案:

答案 0 :(得分:3)

你真正想做的是:
每个开发人员都有自己的web.config,但您希望构建每次都使用相同的“中心”web.config并忽略开发人员自己的web.config版本。
正确的吗?

如果是的话,我会以不同的方式这样做:
默认情况下,您可以让开发人员使用他们自己的web.config文件,但仍然将“中心”web.config放入具有不同文件名的主项目存储库中(例如,web.config.build。<登记/> 然后,您可以在某种方式中使用BeforeBuild(在.csproj文件中),以便在没有web.config文件时将其自动复制到web.config(应该是构建服务器上的情况,但不是开发人员机器上的情况。)

阅读这个答案,看看我是如何做类似的事情:
how to ignore files in kiln/mercurial using tortoise hg “that are part of the repository”

答案 1 :(得分:0)

您可以创建第二个VCS根目录并在teamcity计算机上的结帐中“合并”文件

  • 在teamcity中创建第二个VCS根
  • 根据需要添加忽略规则以仅匹配您的* .config文件并将其放在正确的文件夹中

示例忽略了我头脑中的模式:

-:* 
+:web.build.config=>website/

但我建议您遵循Christian Specht的方法,因为当您有一个web.example.config,您可以在预构建事件中复制到web.config,您可以使用新设置对其进行修改。这将由teamcity轻松获取,因为您可以让它“清理”目录(使用Swabra)来删除“旧”web.config文件并从(新)web.example.config中重新复制它。 p>