2010-12-16 3 views
8

Я использую преобразования web.config, доступные через VS2010. В этом случае я задаюсь вопросом, возможно ли «окружить» элемент другим во время преобразования. Вот пример:Преобразование Web.config - окружающие элементы

по умолчанию web.config содержит:

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

Мой трансформируются файл должен содержать

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

Поэтому в основном я хочу, чтобы «обернуть» system.web элемент с местоположением элемент. Моя единственная мысль была сделать преобразование, так что я вставил до и после, как:

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

Но место запирающего элемента не является допустимым XML в соответствии с VS (я предполагаю, что из-за Transform атрибута). Просто вставляя элемент самозакрывающегося местоположения, прежде чем system.web не поможет, потому что полученный system.web все еще не «окружен».

ответ

2

В настоящее время это невозможно будет сделать с помощью преобразования web.config, но это действительно должно быть осуществимо, если вы написали пользовательское преобразование ... В настоящее время выполняется обновление документации о том, как писать пользовательские преобразования, но это не прямо сейчас ...

Я отправлю его, как только он доступен ...

+0

Когда-нибудь об этом? Я сейчас смотрю на эту точную ситуацию. – 2016-06-14 11:14:01

2

Если добавить пустое расположение тега в вашем WebConfig, где вы хотели бы быть у него будет нет эффекта.

Вы можете поместить это в файл преобразования в том же месте, что и другой:

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

с закрывающим тегом тоже, и все это.

Смежные вопросы