Проблема с использованием xdt: locator по условию «старт-с» или «содержит» в преобразовании Web.config - PullRequest
5 голосов
/ 11 августа 2011

Я пытаюсь создать файл преобразования web.config, который изменит значение списка appSettings на «false», если имя содержит слово «Config».

<add name="Config.Showlog" value ="true" />

Файл преобразования имеет

<appSettings>
    <add xdt:Transform="SetAttributes(value)" 
         value="false" 
         xdt:Locator="Condition(starts-with(@name,'Config')"/>
</appSettings>

Visual Studio 2010 показывает ошибку:

Условие Требуется ровно 1 аргумент.

Я также попробовал это с Xpath в качестве атрибута для локатора xdt: и получил ту же ошибку. Кажется, проблема заключается в том, как VS 2010 анализирует выражение внутри Condition() или Xpath().

Как вы можете обойти эту проблему?

Ответы [ 3 ]

4 голосов
/ 03 февраля 2012

Я пришел к следующему решению:

<?xml version="1.0"?>
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
  <appSettings>
    <add xdt:Transform="SetAttributes(value)"
         value="false"
         xdt:Locator="Condition(contains(@key, 'Config'))"/>
  </appSettings>
</configuration>

Это установит все value атрибуты <appSettings><add> элементов, которые содержат «Config» в атрибуте key, в «false».1007 *

<add key="SomeOtherAppSettings"
     value="OriginalValue" />
<add key="An entry containing Config in the key attribute"
     value="false" />
1 голос
/ 27 августа 2013

Эта проблема является ошибкой в ​​Microsoft.Web.Publishing.Tasks.Dll, установленном с Visual Studio 2010.

Microsoft исправила проблему с Visual Studio 2012 RTM ( См. Отзыв ).

Для тех, кто все еще работает в Visual Studio 2010, замена Microsoft.Web.Publishing.Tasks.Dll в $(MSBuildToolsPath)\MSBuild\Microsoft\VisualStudio\v10.0\Web обновленным файлом в $(MSBuildToolsPath)\MSBuild\Microsoft\VisualStudio\v11.0\Web устранит проблему и позволит выполнить успешную сборку.

0 голосов
/ 26 августа 2013

Это ошибка в Visual Studio 2010. Microsoft исправила ее в Visual Studio 2012

http://connect.microsoft.com/VisualStudio/feedback/details/618550/web-config-xpath-and-condition-locators-do-not-allow-commas-in-xpath-expression

...