web.config转换可以链接吗?

时间:2011-03-31 07:58:04

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

让我们假装我们拥有以下服务器[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的转换。

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

3 个答案:

答案 0 :(得分:1)

我有更多配置。所有这些都与T4同步。请参阅我的回答here

答案 1 :(得分:1)

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

如果你熟悉msbuild,这很简单。如果没有,请回复/评论,我会尽力在今天晚些时候提供示例。

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

答案 2 :(得分:1)

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

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

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

  

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

     

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

     

1.web.release.config

     

2.web.production.config

有关详细信息,请参阅Profile specific web.config transforms and transform preview