【问题标题】:Can web.config transforms be chained?可以链接 web.config 转换吗?
【发布时间】:2011-03-31 07:58:04
【问题描述】:

假设我们有以下服务器 [dev、test、production],dev 和 test 在配置上非常相似,而生产则完全不同。

如果我使用 web.config 转换,这意味着我必须为 Web.dev.config 和 Web.test.config 复制很多设置。如果我可以对我的转换使用相同的转换机制,这样 test.config 基于 dev.config,那就太好了。

我想到了两种可能的方法,我不确定它们中的任何一种是否可行:

  • 当我们在测试配置下运行时,尝试让 MSBuild 先转换 dev.config,然后针对结果运行 test.config
  • 试图让转换机制适用于转换文件。我会以某种方式针对 dev.config 运行 test.config 并创建一个临时文件,然后将其用作针对 Web.config 的转换。

有谁知道这样的事情是否可行?如果是这样,人们将如何设置它?

【问题讨论】:

    标签: visual-studio-2010 msbuild web-config


    【解决方案1】:

    TransformXml 只是一个在编译后调用的 MSBUILD 任务。如果您扩展/修改您的构建,您可以让它运行转换任务两次,或者允许针对您的配置正常运行,然后提供第二个文件并使用该任务来执行。

    如果您熟悉 msbuild,这非常简单。如果没有,请回复/评论,我将在今天晚些时候尝试提供示例。

    但最后,是的,这是可能的,因为我在过去的项目中也有类似的需求。

    【讨论】:

      【解决方案2】:

      我还有更多配置。所有这些都与 T4 同步。看我的回答here

      【讨论】:

      • 有趣的方法。包含文件的能力看起来非常好。我认为在某些领域 .config 转换更好。例如,在替换/删除部分时可能会走得更远。还是我错过了什么?
      • 我同意你的看法。当您必须仅更改配置字符串中的值或添加/删除一两个部分时,基于 T4 的方法是合适的。
      【解决方案3】:

      虽然已经回答了这个问题,但我想用一个反映 Visual Studio 2012 中所做更改的答案来更新它,从而使这变得相当容易。

      从 Visual Studio 2012 开始,可以“链接”构建和发布配置文件转换。

      因此,您可以使用“发布”构建转换来处理常见配置,例如关闭调试、打开自定义错误以及与发布配置文件关联的任意数量的“发布”转换,添加特定于实例的连接字符串和 appSettings 等数据。

      在 VS 2012 中(以及通过 VS2010 发布更新) Azure SDK)现在支持发布特定转换的概念。你 现在还可以指定用于配置文件的项目配置 在发布对话框上发布...

      在这种情况下,我创建了一个名为 Production 的配置文件并设置了 要发布的配置。当我发布这个项目时,以下 将按此顺序应用转换(如果文件存在)。

      1.web.release.config

      2.web.production.config

      更多信息请参见Profile specific web.config transforms and transform preview

      【讨论】:

      • 太棒了!将不得不调查这个
      猜你喜欢
      • 2011-03-06
      • 1970-01-01
      • 2012-02-16
      • 1970-01-01
      • 1970-01-01
      • 2012-02-09
      • 2019-06-18
      • 2011-03-09
      • 1970-01-01
      相关资源
      最近更新 更多