2012-04-10 4 views
3

Ich habe an einem Build-Skript für eine Website gearbeitet, die wir haben. Die Website ist eine klassische Asp-Web-App mit einer asp.net-Website in einem Ordner der klassischen ASP-Web-App.MSBuild - Führen Sie alle Konfigurationstransformationen gleichzeitig aus - und transformieren Sie andere Dateien.

Wir haben verschiedene Versionen von global.asa, die anstelle von verschiedenen Webkonfigurationen ersetzt werden müssen. Wir sind dabei, in eine kontinuierliche Integrationsumgebung zu wechseln, von der mir so vieles noch neu ist. Ich habe ein Build-Skript geschrieben, das die folgenden Aufgaben ausführt.

  1. Bereinigt das Verzeichnis buildartifacts, falls es existiert.
  2. Erstellt die Lösungsdatei mit der übergebenen Konfiguration. Dies erzeugt die Ausgabe für jedes Projekt in einem separaten Ordner.
  3. Kopiert die Dateien in die erforderliche Ordnerstruktur.
  4. Packt das Ergebnis mit MSDeploy als Sync hoch.

Mein erstes Problem ist folgendes ...

Wenn ich die MSBuild-Aufgabe ausführen, wie so ...

<MSBuild Projects="$(SolutionFileName)" 
     Properties="Configuration=$(Configuration);OutDir=%(BuildArtifacts.FullPath)" /> 

Es baut die Web-App aber gilt keine Transformationen. Ich hätte angenommen, dass MSBuild die Transformationen automatisch anwenden würde. Stattdessen habe ich alle 3 Konfigurationsdateien im Ausgabeordner, der den Build enthält. Warum ist das? Ich habe einige Suche here und here getan, und sie verwenden eine separate Aufgabe, um die Transformation durchzuführen. Wenn Visual Studio die Transformationen anwenden kann und Visual Studio MSBuild verwendet, würde ich denken, dass MSBuild Transformationen anwenden kann? Ist die MSBuild-Konfiguration nicht bewusst? Auch wenn ich es separat machen muss, kann ich alle Transformationen auf einmal durchführen, wenn sich mehrere Konfigurationsdateien in mehreren Ordnern auf jeder Ebene der Ordnerstruktur befinden.

Mein zweites Problem ist ... als eine klassische asp Web-App können wir nicht wirklich Konfigurationsdateien für diesen Teil davon verwenden, weil ... nun, ich bin mir nicht sicher, wie die klassische asp Web-App auf die Konfiguration zugreifen würde Datei? Daher haben wir verschiedene Versionen der Datei global.asa, die normalerweise manuell ersetzt werden würden. Ich nehme an, ich könnte die spezifischen asa-Dateien durchsuchen/kopieren, die wir zu diesem Zeitpunkt benötigen, aber gibt es eine Möglichkeit, vielleicht Transformationen zu verwenden, um diese Aufgabe zu erledigen?

Antwort

0

In Bezug auf das Problem der Transformationen ... sobald wir die Bereitstellung mit Msdeploy aussortierten, fanden wir heraus, dass Msdeploy die Transformationen bei der Bereitstellung tatsächlich durchführt. Es speichert die Transformationsdaten in einer der XML-Dateien, die mit dem Paket erstellt werden.

0

Vielleicht ist das nicht genau das, was Sie brauchen. Ich benutze XmlPreprocess tool für die Manipulation von Konfigurationsdateien. Ich verwende eine Zuordnungsdatei für mehrere Umgebungen. Sie können die Zuordnungsdatei nach Excel bearbeiten. Es ist sehr einfach zu bedienen.

Sie können es von MSBuild-Skript mit Exec-Task aufrufen.