【发布时间】:2011-02-24 07:29:46
【问题描述】:
有谁知道是否有办法“转换”值的特定部分而不是替换整个值或属性?
例如,我有几个 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,这违背了简化 web.config 更新的目的。
我知道我也可以将该 URL 拆分为不同的部分并独立更新它们,但我宁愿将所有内容集中在一个键中。
我查看了可用的 web.config 转换,但似乎没有什么适合我想要完成的。
这些是我用作参考的网站:
Vishal Joshi's blog、MSDN Help 和 Channel9 video
任何帮助将不胜感激!
-D
【问题讨论】:
标签: asp.net visual-studio-2010 web-config transformation web-deployment