2015-07-03 3 views
8

Ich habe web.config Transformationen für mehrere Umgebungen. In der Konfigurationsdatei habe ich einen ApplicationSettings-Abschnitt mit mehreren Einstellungs- und Wertepaaren.web.config transformiert für <applicationSettings>

Ich habe versucht, basierend auf der Syntax, die ich verwende, um Namen zu entsprechen und ändern Sie die Verbindungszeichenfolgen auch Einstellungen übereinstimmen und ändern Sie den Wert, aber die Transformationen sind fehlgeschlagen. Ist das überhaupt möglich?

Also meine web.config hat:

<applicationSettings> 
    <AppName.My.MySettings> 
     <setting name="setting1" serializeAs="String"> 
      <value>Initial Value</value> 
     </setting> 
    </AppName.My.MySettings> 
</applicationSettings> 

Mein Transformationsdatei

<applicationSettings> 
    <add name="setting1" value="Changed Value" xdt:Transform="SetAttributes" xdt:Location="Match(name)"/> 
</applicationSettings> 

habe ich keine Fehler, wenn ich die Transformation der Vorschau, aber während der Verbindungszeichenfolge Einstellung werden den Wert für setting1 umgewandelt ist nicht. Jede Hilfe wird geschätzt.

UPDATE

<applicationSettings> 
    <add name="setting1" value="Changed Value" xdt:Transform="Replace" xdt:Location="Match(name)"/> 
</applicationSettings> 

Leider keine Fehler ... gleiches Problem und nicht verwandeln.

SOLUTION ich vergaß zu erwähnen, ich mehr als eine Einstellung haben, so deutliche Antwort Teillösung ist ... Dies ist, wie ich es getan habe ... Web.Config ...

<applicationSettings> 
    <AppName.My.MySettings> 
     <setting name="setting1" serializeAs="String"> 
      <value>Initial Value 1</value> 
     </setting> 
     <setting name="setting2" serializeAs="String"> 
      <value>Initial Value 2</value> 
     </setting> 
     <setting name="setting3" serializeAs="String"> 
      <value>Initial Value 3</value> 
     </setting> 
    </AppName.My.MySettings> 
</applicationSettings> 

Trans Datei

<applicationSettings xdt:Transform="Replace"> 
    <AppName.My.MySettings> 
     <setting name="setting1" serializeAs="String"> 
      <value>CHANGED VALUE 1</value> 
     </setting> 
     <setting name="setting2" serializeAs="String"> 
      <value>Initial value 2</value> 
     </setting> 
     <setting name="setting3" serializeAs="String"> 
      <value>CHANGED VALUE 3</value> 
     </setting> 
    </AppName.My.MySettings> 
</applicationSettings> 

Hinweis musste ich sind alle meine verschachtelten Einstellungen und Werte, auch wenn einige von ihnen nicht wie im Fall änderte sich von 2 in meinem Beispiel.

+0

Wert ist ein Knoten kein Attribut, und Sie müssen verwenden Trans = „Ersetzen“ – Thorarins

+0

@Andreas ... finden Sie in meinem Update .. noch keine Freude. – Mych

Antwort

-2

Originaldatei:

<applicationSettings> 
    <AppName.My.MySettings> 
     <setting name="setting1" serializeAs="String"> 
      <value>Initial Value</value> 
     </setting> 
    </AppName.My.MySettings> 
</applicationSettings> 

Transform-Datei:

<applicationSettings> 
    <AppName.My.MySettings> 
     <setting name="setting1" serializeAs="String"> 
      <value xdt:Transform="Replace">Changed Value</value> 
     </setting> 
    </AppName.My.MySettings> 
    </applicationSettings> 
+1

Andreas, transformieren auf eigene Faust hat nicht funktioniert Ich musste xdt: Transform = "Replace" (Groß-/Kleinschreibung beachten). Ich habe jetzt ein anderes Problem. Ich habe mehr als eine Einstellung (12 um genau zu sein). Die Transformationsvorschau zeigt, dass die Transformation durchgeführt wurde, aber alle gegen die erste Einstellung, so dass am Ende der Transformation die Einstellung 1 den transformierten Wert von setting12 hat, während alle anderen setting2 zu setting12 unverändert bleiben. Irgendwelche Ideen ... Ich denke, ich brauche einen Ort. – Mych

+0

müssen die XML sehen, um Ihnen zu helfen – Thorarins

+1

Sorted .... Anstatt die XDT: Transform = "Replace" innerhalb der Wertparameter platzieren Ich legte es mit der Wurzel von ApplicationSettings und das hat funktioniert ... geben Sie Kredit, wie Sie darauf hingewiesen Ich in die richtige Richtung ... aktualisierte Frage mit der richtigen Lösung. – Mych

0

Transform-Datei:

<applicationSettings> 
    <AppName.My.MySettings> 
     <setting xdt:Transform="Replace" xdt:Locator="Match(name)" name="setting1" serializeAs="String"> 
      <value>Changed Value</value> 
     </setting> 
    </AppName.My.MySettings> 
    </applicationSettings> 

16

Ich weiß, dass dies ein wenig zu spät, aber die folgende Transform-Datei ermöglicht es Ihnen, nur eine Einstellung zu transformieren, wenn Sie mehrere haben.

<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform"> 
    <applicationSettings> 
    <YourProject.Settings> 
     <setting name="Log4NetPath" serializeAs="String" xdt:Transform="Replace" xdt:Locator="Match(name)"> 
     <value xdt:Transform="Replace">NewPath</value> 
     </setting> 
    </YourProject.Settings> 
    </applicationSettings> 
</configuration> 
Verwandte Themen