Erstellen und Ausführen einer Befehlsdatei für die Bereitstellung

von Jason Lee

In diesem Thema wird beschrieben, wie Sie eine Befehlsdatei erstellen, mit der Sie eine Bereitstellung mit Microsoft-Build-Engine -Projektdateien (MSBuild) als einen einstufigen, wiederholbaren Prozess ausführen können.

Dieses Thema ist Teil einer Reihe von Tutorials, die sich auf die Unternehmensbereitstellungsanforderungen eines fiktiven Unternehmens namens Fabrikam, Inc. beziehen. In dieser Tutorialreihe wird eine Beispiellösung – die Contact Manager-Lösung – verwendet, um eine Webanwendung mit einem realistischen Komplexitätsgrad darzustellen, einschließlich einer ASP.NET MVC 3-Anwendung, eines Windows Communication Foundation-Diensts (WCF) und eines Datenbankprojekts.

Die Bereitstellungsmethode, die im Mittelpunkt dieser Tutorials steht, basiert auf dem unter Grundlegendes zum Buildprozess beschriebenen Ansatz der geteilten Projektdatei, bei dem der Buildprozess von zwei Projektdateien gesteuert wird– eine mit Buildanweisungen, die für jede Zielumgebung gelten, und eine mit umgebungsspezifischen Build- und Bereitstellungseinstellungen. Zur Buildzeit wird die umgebungsspezifische Projektdatei in die umgebungsunabhängige Projektdatei zusammengeführt, um einen vollständigen Satz von Buildanweisungen zu bilden.

Prozessübersicht

In diesem Thema erfahren Sie, wie Sie eine Befehlsdatei erstellen und ausführen, die diese Projektdateien verwendet, um eine wiederholbare Bereitstellung in Ihrer Zielumgebung durchzuführen. Im Wesentlichen muss die Befehlsdatei lediglich einen MSBuild-Befehl enthalten, der Folgendes enthält:

  • Weist MSBuild an, die umgebungsunabhängige Datei Publish.proj auszuführen.
  • Teilt der Datei Publish.proj mit, welche Datei die umgebungsspezifischen Projekteinstellungen enthält und wo sie zu finden ist.

Erstellen eines MSBuild-Befehls

Wie unter Grundlegendes zum Buildprozess beschrieben, ist die umgebungsspezifische Projektdatei (z . B. Env-Dev.proj) so konzipiert, dass sie zur Buildzeit in die umgebungsunabhängige Publish.proj-Datei importiert wird. Zusammen bieten diese beiden Dateien einen vollständigen Satz von Anweisungen, die MSBuild darüber informieren, wie Sie Ihre Lösung erstellen und bereitstellen.

Die Datei Publish.proj verwendet ein Import-Element , um die umgebungsspezifische Projektdatei zu importieren.

<Import Project="$(TargetEnvPropsFile)"/>

Wenn Sie also MSBuild.exe verwenden, um die Contact Manager-Lösung zu erstellen und bereitzustellen, müssen Sie Folgendes ausführen:

  • Führen Sie MSBuild.exe für die Datei Publish.proj aus.
  • Geben Sie den Speicherort der umgebungsspezifischen Projektdatei an, indem Sie einen Befehlszeilenparameter mit dem Namen TargetEnvPropsFile angeben.

Dazu sollte Ihr MSBuild-Befehl wie folgt aussehen:

msbuild.exe Publish.proj /p:TargetEnvPropsFile=EnvConfig\Env-Dev.proj

Von hier aus ist es ein einfacher Schritt, zu einer wiederholbaren, einstufigen Bereitstellung zu wechseln. Sie müssen lediglich ihren MSBuild-Befehl zu einer CMD-Datei hinzufügen. In der Contact Manager-Lösung enthält der Ordner Publish eine Datei namens Publish-Dev.cmd , die genau dies ausführt.

%windir%\Microsoft.NET\Framework\v4.0.30319\msbuild.exe Publish.proj /fl /p:TargetEnvPropsFile=EnvConfig\Env-Dev.proj
echo 
pause

Hinweis

Der Schalter /fl weist MSBuild an, eine Protokolldatei mit dem Namen msbuild.log in dem Arbeitsverzeichnis zu erstellen, in dem MSBuild.exe aufgerufen wurde.

Zum Bereitstellen oder erneuten Bereitstellen der Contact Manager-Lösung müssen Sie lediglich die Datei Publish-Dev.cmd ausführen. Wenn Sie die Datei ausführen, führt MSBuild Folgendes aus:

  • Erstellen Sie alle Projekte in der Projektmappe.
  • Generieren Sie bereitstellungsfähige Webpakete für die Webanwendungsprojekte.
  • Generieren Sie DBSCHEMA- und DEPLOYMANIFEST-Dateien für die Datenbankprojekte.
  • Stellen Sie die Webpakete auf dem Webserver bereit.
  • Stellen Sie die Datenbank auf dem Datenbankserver bereit.

Ausführen der Bereitstellung

Wenn Sie eine Befehlsdatei für Ihre Zielumgebung erstellt haben, sollten Sie in der Lage sein, die gesamte Bereitstellung abzuschließen, indem Sie einfach die Datei ausführen.

So stellen Sie die Contact Manager-Lösung in Ihrer Testumgebung bereit

  1. Öffnen Sie auf Ihrer Entwicklerarbeitsstation Windows Explorer, und navigieren Sie dann zum Speicherort der Datei Publish-Dev.cmd.

  2. Doppelklicken Sie auf die Datei, um sie auszuführen.

  3. Wenn das Dialogfeld Datei öffnen – Sicherheitswarnung angezeigt wird, klicken Sie auf Ausführen.

  4. Wenn Ihre Konfigurationseinstellungen und Testserver ordnungsgemäß eingerichtet sind, wird im Eingabeaufforderungsfenster die Meldung Build erfolgreich angezeigt, wenn MSBuild die Verarbeitung der Projektdateien abgeschlossen hat.

    Wenn Ihre Konfigurationseinstellungen und Testserver ordnungsgemäß eingerichtet sind, wird im Eingabeaufforderungsfenster die Meldung Build erfolgreich angezeigt, wenn MSBuild die Verarbeitung der Projektdateien abgeschlossen hat.

  5. Wenn Sie die Lösung zum ersten Mal in dieser Umgebung bereitgestellt haben, müssen Sie das Computerkonto des Testwebservers der db_datawriter und db_datareader Rollen in der ContactManager-Datenbank hinzufügen. Dieses Verfahren wird unter Konfigurieren eines Datenbankservers für die Webbereitstellungsveröffentlichung beschrieben.

    Hinweis

    Sie müssen diese Berechtigungen nur zuweisen, wenn Sie die Datenbank erstellen. Standardmäßig wird die Datenbank beim Buildprozess nicht bei jeder Bereitstellung neu erstellt, sondern die vorhandene Datenbank mit dem neuesten Schema verglichen und nur die erforderlichen Änderungen vorgenommen. Daher sollten Sie diese Datenbankrollen nur bei der ersten Bereitstellung der Lösung zuordnen müssen.

  6. Öffnen Sie internet Explorer, und navigieren Sie zur URL der Contact Manager-Anwendung (z. Bhttp://testweb1:85/ContactManager/. ).

  7. Vergewissern Sie sich, dass die Anwendung wie erwartet funktioniert und Sie Kontakte hinzufügen können.

    Vergewissern Sie sich, dass die Anwendung wie erwartet funktioniert und Sie Kontakte hinzufügen können.

Zusammenfassung

Das Erstellen einer Befehlsdatei mit Ihren MSBuild-Anweisungen bietet Ihnen eine schnelle und einfache Möglichkeit, eine Lösung mit mehreren Projekten in einer bestimmten Zielumgebung zu erstellen und bereitzustellen. Wenn Sie Ihre Lösung wiederholt in mehreren Zielumgebungen bereitstellen müssen, können Sie mehrere Befehlsdateien erstellen. In jeder Befehlsdatei erstellt der MSBuild-Befehl dieselbe universelle Projektdatei, gibt jedoch eine andere umgebungsspezifische Projektdatei an. Beispielsweise kann eine Befehlsdatei, die in einer Entwickler- oder Testumgebung veröffentlicht werden soll, den folgenden MSBuild-Befehl enthalten:

msbuild.exe Publish.proj /p:TargetEnvPropsFile=EnvConfig\Env-Dev.proj

Eine Befehlsdatei, die in einer Stagingumgebung veröffentlicht werden soll, kann den folgenden MSBuild-Befehl enthalten:

msbuild.exe Publish.proj /p:TargetEnvPropsFile=EnvConfig\Env-Stage.proj

Hinweis

Anleitungen zum Anpassen der umgebungsspezifischen Projektdateien für Ihre eigenen Serverumgebungen finden Sie unter Konfigurieren von Bereitstellungseigenschaften für eine Zielumgebung.

Sie können den Buildprozess auch für jede Umgebung anpassen, indem Sie Eigenschaften überschreiben oder verschiedene andere Switches in Ihrem MSBuild-Befehl festlegen. Weitere Informationen finden Sie unter MSBuild-Befehlszeilenreferenz.