2010-12-16 19 views
8

Korzystam z transformacji web.config dostępnych przez VS2010. W tym jednym przypadku zastanawiam się, czy możliwe jest "otoczenie" elementu innym podczas transformacji. Oto przykład:Transformacje Web.config - otaczające elementy

domyślny web.config zawiera:

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

Mój przekształcony plik powinien zawierać

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

Więc zasadniczo chcę 'wrap' element system.web z lokalizacją element. Moją jedyną myślą było zrobić transformacji tak, że przed i po włożeniu jak:

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

ale element zamykający lokalizacja nie jest prawidłowy XML zgodnie z VS (zgaduję ze względu na atrybut Transform). Wstawianie samozamykającego się elementu przed system.web również nie pomaga, ponieważ wynikowy system.web nadal nie jest "otoczony".

Odpowiedz

2

Obecnie nie będzie można tego zrobić za pomocą transformacji web.config, ale rzeczywiście powinno to być wykonalne, jeśli napisałeś niestandardową transformację ... Jest opracowywana aktualizacja dokumentacji na temat tworzenia niestandardowych transformacji, ale nie jest to jeszcze się teraz ...

będę pisać go tak szybko, jak to możliwe ...

+0

Czy kiedykolwiek do tego doszło? Obecnie przyglądam się tej dokładnej sytuacji. –

2

Jeśli dodać pustego tagu lokalizacji w webconfig gdzie chcesz go mieć będzie miał bez efektu.

Następnie można umieścić to w pliku transformacji w tym samym miejscu co drugi:

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

z tagiem zamykającym zbyt i to wszystko.

Powiązane problemy