Wie erhalte ich eine Msbuild-Aufgabe, um Konfigurationsumwandlungen für eine Sammlung von Dateien durchzuführen?

8

Ich versuche, alle web.config-Dateien in einem Projekt, das ich habe, zu transformieren, hier ist eine meine Baumstruktur:

  • Transform.bat
  • Verwandelt sich
    • ConfigTransform.proj
    • Web.Transform.config
  • Website
    • web.config
    • Ansichten
      • web.config

Es gibt mehr web.config-Dateien, aber die Idee ist, dass sie alle finden und die selbe Config-Transformation anwenden werden.

Ich habe ein paar Tipps aus einem Blogpost, den ich gefunden habe , aber ich bleibe in der letzter Schritt, die eigentliche Transformation. Außerdem gibt es ein bisschen einen harten Teil in der Mitte, den ich nicht wirklich mag (ich verstehe nicht ganz, was ich mache und ich mache es offensichtlich falsch). Hier bin ich so weit:

%Vor%

Meine Transform.bat sieht so aus:

%Vor%

Wenn ich also den Stapel aufruft, werden die entsprechenden Verzeichnisse erstellt. Wie Sie jedoch sehen können, musste ich mit dem OutDir ein bisschen kreativ sein, um es zu machen .. \ N \ N. Aus irgendeinem Grund ist der OutDir-Pfad genau so wie das Eingabeverzeichnis, wenn ich dies nicht tue. Also muss ich natürlich etwas in MakeDir ändern, aber ich bin mir nicht sicher was.

Das wahre Problem kommt, wenn es beginnt, die Transformationen zu machen. Ich habe versucht, den Parameter TransformXml Source so oder ähnlich zu erhalten:

%Vor%

Letzteres gibt mir einen Fehler "Quelldatei konnte nicht geöffnet werden: Das Format des angegebenen Pfads wird nicht unterstützt." und der erstere gibt mir diese Ausgabe:

%Vor%

Um meine Fragen zusammenzufassen:

  1. Wie vermeide ich das Pfadproblem für den OutDir? Ich habe mit mehreren Pfaden getüftelt, aber ich kann es nicht richtig machen.
  2. Wie bekomme ich von der TransformXml-Task mehrere Dateien im Source-Attribut?
sebastiaan 30.04.2012, 12:08
quelle

1 Antwort

10

Ich glaube, du warst ziemlich nah dran. Ich habe unten ein Beispiel eingefügt, das zeigt, wie das geht.

In meinem Beispiel entdecke ich die Transformation, die neben der Datei web.config selbst sitzt. Für Ihr Szenario können Sie einfach eine MSBuild-Eigenschaft verwenden, die auf eine bestimmte Datei verweist.

%Vor%

Zu Ihrer Information: Sie können eine vollständige Probe herunterladen unter Ссылка .

    
Sayed Ibrahim Hashimi 02.05.2012, 06:22
quelle