2016-08-01 24 views
0

Ich habe eine Web.config-Transformation, die sich schwer benimmt. Meine web.config sieht wie folgt aus:Web.config transform entfernt erste Einstellung trotz Name Locator

<configuration> 
    <configSections> </configSections> 
    <appSettings> </appSettings> 
    <connectionStrings> </connectionStrings> 
    <system.web> </system.web> 
    <runtime> </runtime> 
    <system.webServer> </system.webServer> 
    <entityFramework> </entityFramework> 
    <elmah> </elmah> 
    <applicationSettings> 
    <MySite.Properties.Settings> 
     <setting name="CommandTimeout" serializeAs="String"> 
     <value>180</value> 
     </setting> 
     <setting name="LoginServerUrl" serializeAs="String"> 
     <value>mydevsite.com</value> 
     </setting> 
    </MySite.Properties.Settings> 
    </applicationSettings> 
</configuration> 

Wenn ich denken würde, dass ich in der Lage sein sollte, um es mit:

<MySite.Properties.Settings> 
    <setting name="LoginServerUrl" serializeAs="String" xdt:Transform="Replace" xdt:Locator="Match(name)"> 
    <value>myqasite.com</value> 
    </setting> 
</MySite.Properties.Settings> 

Aber wenn ich dies tun, ist es die ersetzt erste Einstellung (command timeout) und überlasse dort die zweite, so dass ich 2 loginserverurl-Einstellungen und kein Kommando-Timeout habe!

Der einzige Weg, die ich bekommen kann es mydevsite.com zu myqasite.com zu transformieren ist ein zu schaffen Transformation, tut dies:

<?xml version="1.0" encoding="utf-8"?> 

<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform"> 
    <system.web> 
    <compilation xdt:Transform="RemoveAttributes(debug)" /> 
    <customErrors mode="Off" xdt:Transform="Replace"> 
     <error statusCode="404" redirect="~/Error/Error404"/> 
    </customErrors> 
    </system.web> 
    <applicationSettings> 
    <MySite.Properties.Settings> 
     <setting name="LoginServerUrl" xdt:Transform="Remove" xdt:Locator="Match(name)"/> 
     <setting name="CommandTimeout" xdt:Transform="Insert" serializeAs="String"> 
     <value>180</value> 
     </setting> 
     <setting name="LoginServerUrl" serializeAs="String" xdt:Transform="Replace" xdt:Locator="Match(name)"> 
     <value>myqasite.com</value> 
     </setting> 
    </MySite.Properties.Settings> 
    </applicationSettings> 
</configuration> 

Bin ich etwas falsch hier?

Antwort

0

Mit Ihrer Konfiguration (in einer Datei App.config), arbeitete die folgenden (in einer App.Debug.config Datei) perfekt für mich:

Das einzige, was ich hinzufügen musste, war die <applicationSettings> Tag zu wickeln <MySite.Properties.Settings>

<?xml version="1.0"?> 
<!-- For more information on using app.config transformation visit http://go.microsoft.com/fwlink/?LinkId=125889 --> 
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform"> 
    <applicationSettings> 
    <MySite.Properties.Settings> 
     <setting name="LoginServerUrl" serializeAs="String" xdt:Transform="Replace" xdt:Locator="Match(name)"> 
     <value>myqasite.com</value> 
     </setting> 
    </MySite.Properties.Settings> 
    </applicationSettings> 
</configuration> 

ich bin mit der "Configuration Transformation" VS-Erweiterung der verschachtelten Dateien für mich zu erstellen:

project file structure

+0

Wie haben Sie überprüft, ob es funktioniert hat? Über Vorschau auf 'App.Debug.config' transformieren? –

+0

@CBauer Ich schaute nach einem Build auf die ausgegebene Konfigurationsdatei im Ordner 'bin \ Debug ' – Paddy