2011-08-11 14 views
5

Próbuję utworzyć plik transformacji web.config, który zmieni listę wartości appSettings na "false", jeśli nazwa zawiera słowo "Konfig."Problem z użyciem xdt: locator według warunku "starts-with" lub "contains" w Web.config Transformation

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

Plik przekształcić ma

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

Visual Studio 2010 pokazuje błąd:

Condition Requires exactly 1 arguments.

Próbowałem również, że z XPath jako atrybut dla xdt: lokalizatora i dostał ten sam błąd. Wydaje się, że problem wynika z tego, jak VS 2010 analizuje wyrażenie wewnątrz Condition() lub Xpath().

Jak można obejść ten problem?

Odpowiedz

4

wymyśliłem następujące rozwiązanie:

<?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> 

ten ustawi wszystkie value atrybuty <appSettings><add> elementów, które zawierają „Config” w atrybucie na „false” key.

<add key="SomeOtherAppSettings" 
    value="OriginalValue" /> 
<add key="An entry containing Config in the key attribute" 
    value="false" /> 
1

Ten problem jest to błąd w Microsoft.Web.Publishing.Tasks.Dll zainstalowana z Visual Studio 2010.

Firma Microsoft rozwiązała problem z programem Visual Studio 2012 RTM (See feedback).

Dla tych, którzy wciąż są w Visual Studio 2010, zastąpienie Microsoft.Web.Publishing.Tasks.Dll w $(MSBuildToolsPath)\MSBuild\Microsoft\VisualStudio\v10.0\Web zaktualizowanym plikiem w $(MSBuildToolsPath)\MSBuild\Microsoft\VisualStudio\v11.0\Web rozwiąże problem i pozwoli na pomyślną kompilację.

Powiązane problemy