【问题标题】:Deploying shared server controls with web.config transforms使用 web.config 转换部署共享服务器控件
【发布时间】:2013-06-18 09:54:23
【问题描述】:

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

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

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

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

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

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

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

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

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

【问题讨论】:

    标签: visual-studio-2010 msbuild teamcity webdeploy


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2015-08-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-08
      • 1970-01-01
      • 2018-09-25
      • 2015-07-03
      相关资源
      最近更新 更多