首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >有没有办法使用web.config转换进行“替换或插入”?

有没有办法使用web.config转换进行“替换或插入”?
EN

Stack Overflow用户
提问于 2011-04-20 23:16:23
回答 4查看 102.2K关注 0票数 193

我使用下面的文章中描述的web.config转换,以便为不同的环境生成配置。

http://vishaljoshi.blogspot.com/2009/03/web-deployment-webconfig-transformation_23.html

我可以通过匹配键值来进行“替换”转换,例如

代码语言:javascript
复制
<add key="Environment" value="Live" xdt:Transform="Replace" xdt:Locator="Match(key)" />

我可以做“插入”。

代码语言:javascript
复制
<add key="UseLivePaymentService" value="true" xdt:Transform="Insert" />

但我发现真正有用的是ReplaceOrInsert转换,因为我不能总是依赖于原始配置文件有或没有特定的键。

有没有办法做到这一点?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-05-12 23:58:37

我找到了一个便宜的变通方法。如果你有很多需要“替换或插入”的元素,那么它并不美观,也不能很好地工作。

执行"Remove“,然后执行”InsertAfter|InsertBefore.“

例如,

代码语言:javascript
复制
<authorization xdt:Transform="Remove" />
<authorization xdt:Transform="InsertAfter(/configuration/system.web/authentication)">
  <deny users="?"/>
  <allow users="*"/>
</authorization>
票数 109
EN

Stack Overflow用户

发布于 2013-05-22 04:46:03

xdt:Transform="Remove"结合使用VS2012中的xdt:Transform="InsertIfMissing"

代码语言:javascript
复制
<authorization xdt:Transform="Remove" />
<authorization xdt:Transform="InsertIfMissing">
  <deny users="?"/>
  <allow users="*"/>
</authorization>
票数 133
EN

Stack Overflow用户

发布于 2015-07-10 22:12:42

使用InsertIfMissing转换来确保appSetting存在。

然后使用Replace转换来设置它的值。

代码语言:javascript
复制
<appSettings>
  <add key="Environment" xdt:Transform="InsertIfMissing" xdt:Locator="Match(key)" />
  <add key="Environment" value="Live" xdt:Transform="Replace" xdt:Locator="Match(key)" />
</appSettings>

您还可以使用SetAttributes转换而不是Replace。不同之处在于,SetAttributes并不涉及子节点。

代码语言:javascript
复制
<appSettings>  
  <add key="UseLivePaymentService" xdt:Transform="InsertIfMissing" xdt:Locator="Match(key)" />
  <add key="UseLivePaymentService" value="true" xdt:Transform="SetAttributes" xdt:Locator="Match(key)" />
</appSettings>

这些技术比remove+insert好得多,因为现有节点不会移动到父节点的底部。新节点将附加到结尾处。现有节点将保留在源文件中的位置。

此答案仅适用于较新版本的Visual Studio (2012或更高版本)。

票数 98
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5732681

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档