web.config 转换可以链接吗?

问题描述 投票:0回答:3

假设我们有以下服务器[开发、测试、生产],并且开发和测试在配置上非常相似,而生产则完全不同。

如果我使用 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
3个回答
1
投票

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

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

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


1
投票

我还有更多配置。并且全部与T4同步。请参阅我的回答这里


1
投票

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

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

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

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

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

1.web.release.config

2.web.生产.config

请参阅使用 Visual Studio 进行 ASP.NET Web 部署:Web.config 文件转换了解更多信息。

© www.soinside.com 2019 - 2024. All rights reserved.