Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Web.config transforms - surrounding elements

I am using the web.config transforms available via VS2010. In this one case I'm wondering if it possible to 'surround' an element with another during transformation. Here is an example:

default web.config contains:

<configuration>
  <system.web>
   ....
  </system.web>
</configuration>

My transformed file should contain

<configuration>
  <location inheritInChildApplications="false">
    <system.web>
    ...
    </system.web>
  </location>
</configuration>

So essentially I want to 'wrap' the system.web element with a location element. My only thought was to do a transform so that I inserted before and after like:

<location inheritInChildApplications="false" 
          xdt:Transform="InsertBefore(/configuration/system.web)">
</location xdt:Transform="InsertAfter(/configuration/system.web)">

But the closing location element isn't valid xml according to VS (I'm guessing because of the Transform attribute). Just inserting a self-closing location element before system.web doesn't help either because the resulting system.web is still not 'surrounded'.

like image 589
mdarnall Avatar asked Dec 16 '10 22:12

mdarnall


2 Answers

Currently it won't be possible to do this using web.config transformation, but it indeed should be feasible if you wrote a custom transform... There is a documentation update being worked on on how to write custom transforms but it is not yet out now...

I will post it as soon as it is available...

like image 55
Vishal R Joshi Avatar answered Oct 12 '22 13:10

Vishal R Joshi


If you add an empty location tag in your webconfig where you would like it to be it will have no effect.

You can then put this in your transform file in the same location as the other one:

<location xdt:Locator="XPath(some xpath expression)" 
          inheritChildApplications="false" 
          xdt:Transform="SetAttributes(inheritChildApplications)">

with the closing tag too and all that.

like image 43
Iain Avatar answered Oct 12 '22 11:10

Iain