我正在使用VS2010提供的web.config转换。在这一个案例中,我想知道是否有可能在转换期间将一个元素“包围”另一个元素。这是一个例子:
默认的web.config包含:
<configuration>
<system.web>
....
</system.web>
</configuration>
我的转化文件应包含
<configuration>
<location inheritInChildApplications="false">
<system.web>
...
</system.web>
</location>
</configuration>
所以基本上我想用一个location元素'包装'system.web元素。我唯一的想法是做一个变换,以便我在之前和之后插入:
<location inheritInChildApplications="false"
xdt:Transform="InsertBefore(/configuration/system.web)">
</location xdt:Transform="InsertAfter(/configuration/system.web)">
但根据VS(我猜测因为Transform属性),结束位置元素是无效的xml。只是在system.web之前插入一个自动关闭的位置元素也无济于事,因为生成的system.web仍然没有被“包围”。
答案 0 :(得分:2)
目前使用web.config转换不可能做到这一点,但是如果你编写了一个自定义转换它确实应该是可行的...有一个关于如何编写自定义转换的文档更新但是它现在还没出来......
我会尽快发布...
答案 1 :(得分:2)
如果您在webconfig中添加一个空位置标记,那么它将无效。
然后,您可以将其放在转换文件中与其他位置相同的位置:
<location xdt:Locator="XPath(some xpath expression)"
inheritChildApplications="false"
xdt:Transform="SetAttributes(inheritChildApplications)">
还有结束标记以及所有这些。