使用web.config转换部署共享服务器控件

时间:2013-06-18 09:54:23

标签: visual-studio-2010 msbuild teamcity webdeploy

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

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

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

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

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

目前,我将应用程序的配置名称复制到共享项目中,但这是不切实际的,因为我们有几个应用程序,每个应用程序分别到不同的客户,因此共享项目可以获得几十个配置,这些配置都是Release或{的副本{1}}

我希望能够配置构建系统,以便我可以说Web应用程序项目的Debug配置使用共享项目的Internal-Dev配置,而所有其他配置都使用共享项目的Debug配置。这可以在IDE中使用配置管理器进行,配置管理器可以将解决方案配置与单个项目配置联系起来,但我不确定如何在Release内执行此操作。

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

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

1 个答案:

答案 0 :(得分:0)

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

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

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