假设我们有以下服务器[开发、测试、生产],并且开发和测试在配置上非常相似,而生产则完全不同。
如果我使用 web.config 转换,这意味着我必须为 Web.dev.config 和 Web.test.config 复制大量设置。如果我可以对我的转换使用相同的转换机制,以便 test.config 基于 dev.config,那就太好了。
我想到了两种可能的方法,我不确定其中任何一种是否有效:
有谁知道这样的事情是否可能?如果是这样,我们该如何设置呢?
TransformXml
只是一个在编译后调用的 MSBUILD 任务。如果您扩展/修改您的构建,您可以让它运行转换任务两次,或者允许根据您的配置正常运行,然后提供第二个文件并使用该任务来执行该任务。
如果您熟悉 msbuild,这非常简单。如果没有,请回复/评论,我将在今天晚些时候尝试提供示例。
但最终,是的,这是可能的,因为我在过去的项目中也有类似的需求。
我还有更多配置。并且全部与T4同步。请参阅我的回答这里。
虽然这个问题已经得到解答,但我想用一个反映 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 文件转换了解更多信息。