Web.config转换:如何将转换应用于与Locator表达式匹配的所有节点?

问题描述:

我最近在Visual Studio 2010的web部署工具中发现了web.config自动转换。 它运行良好,但我有一个我似乎无法工作的场景。 假设我有以下根Web.configWeb.config转换:如何将转换应用于与Locator表达式匹配的所有节点?

<services> 
    <service name="Service1"> 
    <endpoint address="" binding="customBinding" bindingConfiguration="LargeBufferBinding" 
     contract="Service1" /> 
    <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" /> 
    </service> 
    <service name="Service2"> 
    <endpoint address="" binding="customBinding" bindingConfiguration="LargeBufferBinding" 
     contract="Service2" /> 
    <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" /> 
    </service> 
    <service name="Service3"> 
    <endpoint address="" binding="customBinding" bindingConfiguration="LargeBufferBinding" 
     contract="Service3" /> 
    <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" /> 
    </service> 
</services> 

对于我Web.Release.config,我想所有mexHttpBinding的结合要删除的端点节点。

我用我的Web.Release.config如下:

<services> 
    <service> 
    <endpoint binding="mexHttpBinding" xdt:Locator="Match(binding)" xdt:Transform="Remove" /> 
    </service> 
</services> 

然而,这只会删除第一场比赛,在服务1,而不是下面的。 我已经尝试过在终端和服务节点上定位节点的各种方式,但只有第一场比赛被替换。

有没有办法让所有的<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />被删除?

谢谢。

+0

克莱门特只是作为一个音符,你应该接受下面的答案,而不是它只是发表评论。 – 2011-06-21 20:12:14

我只是尝试这样做,用的removeAll,而不是删除的,似乎这样的伎俩:

<services> 
    <service> 
    <endpoint binding="mexHttpBinding" xdt:Locator="Match(binding)" xdt:Transform="RemoveAll" /> 
    </service> 
</services> 
+0

这样做。谢谢 ! – Clement 2011-02-10 07:27:15