有谁知道是否有方法来“转换”值的特定部分,而不是替换整个值或属性?使用Web.Config转换的高级任务
例如,我有几个appSettings条目指定不同web服务的Url。这些条目在开发环境中与生产环境略有不同。有些人比其他
<!-- DEV ENTRY -->
<appSettings>
<add key="serviceName1_WebsService_Url" value="http://wsServiceName1.dev.domain.com/v1.2.3.4/entryPoint.asmx" />
<add key="serviceName2_WebsService_Url" value="http://ma1-lab.lab1.domain.com/v1.2.3.4/entryPoint.asmx" />
</appSettings>
<!-- PROD ENTRY -->
<appSettings>
<add key="serviceName1_WebsService_Url" value="http://wsServiceName1.prod.domain.com/v1.2.3.4/entryPoint.asmx" />
<add key="serviceName2_WebsService_Url" value="http://ws.ServiceName2.domain.com/v1.2.3.4/entryPoint.asmx" />
</appSettings>
注意的拳头进入,唯一的区别是“.dev”,从“.prod”没有价值的。在第二项,子域名是不同的:“MA1-lab.lab1”从“ws.ServiceName2”
到目前为止,我知道我可以做这样的事情在Web.Release.Config :
<add xdt:Locator="Match(key)" xdt:Transform="SetAttributes(value)" key="serviceName1_WebsService_Url" value="http://wsServiceName1.prod.domain.com/v1.2.3.4/entryPoint.asmx" />
<add xdt:Locator="Match(key)" xdt:Transform="SetAttributes(value)" key="serviceName2_WebsService_Url" value="http://ws.ServiceName2.domain.com/v1.2.3.4/entryPoint.asmx" />
然而,每次的版本为web服务的更新,我将不得不更新Web.Release.Config为好,这违背了simplfying我的web.config更新的目的。
我知道我也可以将这个URL分成不同的部分并独立更新它们,但我宁愿将它全部放在一个关键字中。
我已经浏览了可用的web.config转换但nothings似乎是齿轮towars我想完成。
这些都是我使用作为参考网站:
Vishal Joshi's blog,MSDN Help和Channel9 video
任何帮助,将不胜感激!
-D
说过了,这太棒了!非常感谢花时间来回答这个问题,我开始放弃希望:) – 2010-09-09 13:42:41
神圣的毛骨悚然,这真是太棒了!非常感谢,队友..这正是我需要:) – 2010-10-29 09:13:12
这是如此可怕,没有一个更简单的方法来做到这一点。 :(感谢这个,虽然,这是非常有帮助的 – 2013-07-16 21:16:10