0

我正在使用和teamcity将我们的 Web 应用程序部署到多个服务器。 msbuildwebdeploy

我有每个客户/环境组合的配置 - 例如:

Internal-Dev
Customer1-Test
Customer1-Pilot
Customer1-Live
Customer2-Test
Customer2-Pilot
Customer2-Live

我只需要这些配置,以便部署过程可以使用 web.config 转换为安装设置适当的连接字符串和其他设置。

我遇到的问题是我有一个共享的 Web 服务器控件项目,它实际上只需要两个配置 -debug而且release- 但我需要将上述所有配置复制到这个项目中才能让它们工作。如果我从共享项目中删除Customer2-Pilot,我无法部署到客户 2 的试验服务器,因为它正在寻找Customer2-Pilot不存在的共享项目的配置。

目前,我将应用程序的配置名称复制到共享项目中,但这是不切实际的,因为我们有多个应用程序,每个应用程序都发往不同的客户,因此共享项目可以获得数十个配置,这些配置都是ReleaseDebug

我希望能够配置构建系统,以便我可以说Internal-DevWeb 应用程序项目的配置使用共享项目的Debug配置,而所有其他配置都使用共享项目的Release配置。这可以在 IDE 中使用,配置管理器可以将解决方案配置与单个项目配置相关联,但我不确定如何从teamcity.

我当前的 teamcity 配置使用MSBuild带有 Web 应用程序项目文件的运行器作为构建文件路径,并设置配置参数以在构建后将其部署到具有正确配置的相关服务器。共享项目位于 Web 应用程序存储库的子存储库中,因此可以自动获取和构建。

有什么办法可以改变这个设置来得到我想要的吗?我是否需要将构建文件路径更改为解决方案而不是项目,以便我可以使用配置管理器设置来配置它?

4

1 回答 1

0

事实证明,这就像将构建文件路径参数更改为解决方案文件而不是项目文件一样简单。这意味着您指定解决方案配置而不是项目配置。解决方案配置在配置管理器中管理,您可以在解决方案配置中指定每个项目的配置,以便一切正常。

我有两个需要发布的项目(一个 Web 应用程序和一个 WCF 服务应用程序),它们依赖于其他五个类库项目。我进行了设置,以便使用DebugRelease配置构建类库项目,并且具有需要转换的配置文件的两个项目每个系统都有一个配置。

值得注意的一件事。在旧设置中,我必须有两个构建步骤 - 一个构建和部署 Web 应用程序,另一个构建和部署 WCF 服务应用程序。当我使用解决方案文件作为构建文件时,我不再需要两个步骤,因为它们都是解决方案的一部分,因此它们都可以构建和部署。

于 2013-06-28T09:24:46.337 回答