Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
von Jason Lee
In diesem Thema wird beschrieben, wie Sie eine Befehlsdatei erstellen, mit der Sie eine Bereitstellung mit Microsoft Build Engine (MSBuild)-Projektdateien als einzelstufigen, wiederholbaren Prozess ausführen können.
Dieses Thema ist Teil einer Reihe von Lernprogrammen basierend auf den Anforderungen an die Unternehmensbereitstellung eines fiktiven Unternehmens namens Fabrikam, Inc. In dieser Lernprogrammreihe wird eine Beispiellösung – die Contact Manager-Lösung – verwendet, um eine Webanwendung mit realistischer Komplexität darzustellen, einschließlich einer ASP.NET MVC 3-Anwendung, einem WCF-Dienst (Windows Communication Foundation) und einem Datenbankprojekt.
Die Bereitstellungsmethode im Mittelpunkt dieser Lernprogramme basiert auf dem geteilten Projektdateiansatz, der unter "Grundlegendes zum Buildprozess" beschrieben wird, in 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 Build-Zeit wird die umgebungsspezifische Projektdatei in die umgebungsunabhängige Projektdatei zusammengeführt, um einen vollständigen Satz von Build-Anweisungen 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 einfach einen MSBuild-Befehl enthalten, der:
- Weist MSBuild an, die Datei "environment-agnostic Publish.proj " auszuführen.
- Teilt der Datei Publish.proj mit, welche Datei die umgebungsspezifischen Projekteinstellungen enthält und wo sie gefunden werden soll.
Erstellen eines MSBuild-Befehls
Wie unter "Grundlegendes zum Buildprozess" beschrieben, ist die umgebungsspezifische Projektdatei, z. B. Env-Dev.proj, dafür gedacht, zur Buildzeit in die umgebungsunabhängige Publish.proj Datei importiert zu werden. Zusammen stellen diese beiden Dateien einen vollständigen Satz von Anweisungen bereit, die MSBuild mitteilen, 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 beispielsweise MSBuild.exe zum Erstellen und Bereitstellen der Contact Manager-Lösung verwenden, müssen Sie Folgendes ausführen:
- Führen Sie MSBuild.exe in der Datei Publish.proj aus.
- Geben Sie den Speicherort der umgebungsspezifischen Projektdatei an, indem Sie einen Befehlszeilenparameter namens 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 Bereitstellung mit einem Schritt zu wechseln. Alles, was Sie tun müssen, ist das Hinzufügen Ihres MSBuild-Befehls zu einer .cmd Datei. In der Contact Manager-Lösung enthält der Ordner "Veröffentlichen" eine Datei mit dem Namen Publish-Dev.cmd , die genau dies tut.
%windir%\Microsoft.NET\Framework\v4.0.30319\msbuild.exe Publish.proj /fl /p:TargetEnvPropsFile=EnvConfig\Env-Dev.proj
echo
pause
Hinweis
Die Option "/fl " weist MSBuild an, eine Protokolldatei namens msbuild.log im Arbeitsverzeichnis zu erstellen, in dem MSBuild.exe aufgerufen wurde.
Um die Contact Manager-Lösung bereitzustellen oder erneut bereitzustellen, müssen Sie lediglich die Publish-Dev.cmd Datei ausführen. Wenn Sie die Datei ausführen, führt MSBuild folgende Aktionen 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.
Bereitstellung ausführen
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
Öffnen Sie auf Ihrer Entwicklerarbeitsstation Den Windows-Explorer, und navigieren Sie dann zum Speicherort der Publish-Dev.cmd Datei.
Doppelklicken Sie auf die Datei, um sie auszuführen.
Wenn ein Dialogfeld " Datei öffnen – Sicherheitswarnung " angezeigt wird, klicken Sie auf "Ausführen".
Wenn Ihre Konfigurationseinstellungen und Testserver ordnungsgemäß eingerichtet sind, zeigt das Eingabeaufforderungsfenster eine Meldung "Build erfolgreich " an, wenn MSBuild die Verarbeitung der Projektdateien abgeschlossen hat.
Wenn Sie die Lösung zum ersten Mal in dieser Umgebung bereitstellen, müssen Sie das Test-Webserver-Computerkonto den Rollen db_datawriter und db_datareader der ContactManager-Datenbank hinzufügen. Dieses Verfahren wird unter Configure a Database Server for Web Deploy Publishing beschrieben.
Hinweis
Sie müssen diese Berechtigungen nur zuweisen, wenn Sie die Datenbank erstellen. Standardmäßig erstellt der Buildprozess die Datenbank nicht für jede Bereitstellung neu. Stattdessen wird 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.
Öffnen Sie Internet Explorer, und navigieren Sie zur URL der Contact Manager-Anwendung (z. B
http://testweb1:85/ContactManager/. ).Stellen Sie sicher, dass die Anwendung erwartungsgemäß funktioniert und Sie Kontakte hinzufügen können.
Fazit
Das Erstellen einer Befehlsdatei, die Ihre MSBuild-Anweisungen enthält, bietet Eine schnelle und einfache Möglichkeit zum Erstellen und Bereitstellen einer Multiprojektlösung in einer bestimmten Zielumgebung. 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, diesen MSBuild-Befehl enthalten:
msbuild.exe Publish.proj /p:TargetEnvPropsFile=EnvConfig\Env-Dev.proj
Eine Befehlsdatei, die in einer Stagingumgebung veröffentlicht werden soll, kann diesen 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 Schalter in Ihrem MSBuild-Befehl festlegen. Weitere Informationen finden Sie unter MSBuild-Befehlszeilenreferenz.