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

Visual studio 2010 使用web.config转换部署共享服务器控件,visual-studio-2010,msbuild,teamcity,webdeploy,Visual Studio 2010,Msbuild,Teamcity,Webdeploy,我正在使用teamcity使用msbuild和webdeploy将我们的web应用程序部署到多个服务器上 我有每个客户/环境组合的配置-例如: Internal-Dev Customer1-Test Customer1-Pilot Customer1-Live Customer2-Test Customer2-Pilot Customer2-Live 我只需要这些配置,以便部署过程可以使用web.config转换为安装设置适当的连接字符串和其他设置 我遇到的问题是,我有一个共享的web服务器控

我正在使用
teamcity
使用
msbuild
webdeploy
将我们的web应用程序部署到多个服务器上

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

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

我遇到的问题是,我有一个共享的web服务器控件项目,它实际上只需要两种配置—
debug
release
——但我需要将上述所有配置复制到这个项目中,以使它们正常工作。如果我从共享项目中删除
Customer2 Pilot
,我将无法部署到customer 2的Pilot服务器,因为它正在为不存在的共享项目查找
Customer2 Pilot
配置

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

我希望能够配置构建系统,以便可以说web应用程序项目的
内部开发
配置使用共享项目的
调试
配置,而所有其他配置使用共享项目的
发布
配置。这可以从IDE内部实现,使用configuration manager,它可以将解决方案配置与单个项目配置联系起来,但我不确定如何从
teamcity
内部实现这一点

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


有没有什么方法可以让我改变设置以得到我想要的?是否需要将生成文件路径更改为解决方案而不是项目,以便使用configuration manager设置对其进行配置?

事实证明,这与将生成文件路径参数更改为解决方案文件而不是项目文件一样简单。这意味着您指定的是解决方案配置,而不是项目配置。解决方案配置在configuration manager中进行管理,您可以在解决方案配置中指定每个项目的配置,以便所有项目都能正常工作

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

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