让我们假装我们拥有以下服务器[dev,test,production],dev和test在配置上非常相似,而生产则完全不同。
如果我正在使用web.config转换,则意味着我必须复制Web.dev.config和Web.test.config中的许多设置。如果我可以为我的转换使用相同的转换机制,那么test.config基于dev.config将是非常好的。
我想到了两种可能的方法,我不确定它们是否有效:
有人知道这样的事情是否可行?如果是这样,人们将如何设置它?
答案 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。