Share via


Erstellen von Webanwendungsprojekten und Paketerstellung

von Jason Lee

Wenn Sie ein Webanwendungsprojekt in einer Remoteserverumgebung bereitstellen möchten, besteht Ihre erste Aufgabe darin, das Projekt zu erstellen und ein Webbereitstellungspaket zu generieren. In diesem Thema wird beschrieben, wie der Buildprozess für Webanwendungsprojekte funktioniert. Insbesondere wird erläutert:

  • Wie die Web Publishing Pipeline (WPP) den Buildprozess erweitert, um Bereitstellungsfunktionen einzuschließen.
  • Wie das Webbereitstellungstool für Internetinformationsdienste (IIS) (Web Deploy) Ihre Webanwendung in ein Bereitstellungspaket verwandelt.
  • Wie der Build- und Paketerstellungsprozess funktioniert und welche Dateien erstellt werden.

In Visual Studio 2010 wird der Build- und Bereitstellungsprozess für Webanwendungsprojekte vom WPP unterstützt. Das WPP stellt eine Reihe von Microsoft-Build-Engine (MSBuild)-Zielen bereit, die die Funktionalität von MSBuild erweitern und die Integration in Web Deploy ermöglichen. In Visual Studio können Sie diese erweiterte Funktionalität auf den Eigenschaftenseiten für Ihr Webanwendungsprojekt sehen. Auf der Seite Paket/Veröffentlichung können Sie zusammen mit der Seite SQL-Paket/SQL veröffentlichen konfigurieren, wie Ihr Webanwendungsprojekt nach Abschluss des Buildprozesses für die Bereitstellung gepackt wird.

Auf der Seite Paket/Veröffentlichung können Sie zusammen mit der Seite Package/Publish S Q L konfigurieren, wie Ihr Webanwendungsprojekt nach Abschluss des Buildprozesses für die Bereitstellung gepackt wird.

Wie funktioniert das WPP?

Wenn Sie sich die Projektdatei für ein C#-basiertes Webanwendungsprojekt ansehen, sehen Sie, dass zwei TARGETS-Dateien importiert werden.

<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\
                 v10.0\WebApplications\Microsoft.WebApplication.targets" />

Die erste Import-Anweisung gilt für alle Visual C#-Projekte. Diese Datei, Microsoft.CSharp.targets, enthält Ziele und Aufgaben, die spezifisch für Visual C# sind. Hier wird beispielsweise der CSC-Task (CSC) aufgerufen. Die Datei "Microsoft.CSharp.targets " importiert wiederum die Datei "Microsoft.Common.targets ". Dadurch werden Ziele definiert, die allen Projekten gemeinsam sind, z. B. Erstellen, Neuerstellen, Ausführen, Kompilieren und Bereinigen. Die zweite Import-Anweisung ist spezifisch für Webanwendungsprojekte. Die Datei Microsoft.WebApplication.targets importiert wiederum die Datei Microsoft.Web.Publishing.targets . Die Datei Microsoft.Web.Publishing.targetsist im Wesentlichen das WPP. Es definiert Ziele wie Package und MSDeployPublish, die Web Deploy aufrufen, um verschiedene Bereitstellungsaufgaben auszuführen.

Um zu verstehen, wie diese zusätzlichen Ziele verwendet werden, öffnen Sie in der Contact Manager-Beispiellösung die Datei Publish.proj , und werfen Sie einen Blick auf das BuildProjects-Ziel .

<Target Name="BuildProjects" Condition=" '$(BuildingInTeamBuild)'!='true' ">
  <MSBuild Projects="@(ProjectsToBuild)"
           Properties="OutDir=$(OutputRoot);
                       Configuration=$(Configuration);
                       DeployOnBuild=true;
                       DeployTarget=Package"
           Targets="Build" />
</Target>

Dieses Ziel verwendet den MSBuild-Task , um verschiedene Projekte zu erstellen. Beachten Sie die Eigenschaften DeployOnBuild und DeployTarget :

  • Die DeployOnBuild=true-Eigenschaft bedeutet im Wesentlichen " Ich möchte ein zusätzliches Ziel ausführen, wenn der Build erfolgreich abgeschlossen ist."
  • Die DeployTarget-Eigenschaft identifiziert den Namen des Ziels, das Sie ausführen möchten, wenn die DeployOnBuild-Eigenschaft gleich true ist. In diesem Fall geben Sie an, dass MSBuild das Paketziel nach dem Erstellen des Projekts ausführen soll.

Das Paketziel wird in der Datei Microsoft.Web.Publishing.targets definiert. Im Wesentlichen verwendet dieses Ziel die Buildausgabe Ihres Webanwendungsprojekts und wandelt es in ein Webbereitstellungspaket um, das auf einem IIS-Webserver veröffentlicht werden kann.

Hinweis

Zum Anzeigen einer Projektdatei (z. B. ContactManager.Mvc.csproj) in Visual Studio 2010 müssen Sie das Projekt zunächst aus Ihrer Projektmappe entladen. Klicken Sie im fenster Projektmappen-Explorer mit der rechten Maustaste auf den Projektknoten, und klicken Sie dann auf Projekt entladen. Klicken Sie erneut mit der rechten Maustaste auf den Projektknoten, und klicken Sie dann auf Bearbeiten[Projektdatei]). Die Projektdatei wird in ihrer unformatierten XML-Form geöffnet. Denken Sie daran, das Projekt neu zu laden, wenn Sie fertig sind.
Weitere Informationen zu MSBuild-Zielen, Aufgaben und Import-Anweisungen finden Sie unter Grundlegendes zur Projektdatei. Eine ausführlichere Einführung in Projektdateien und das WPP finden Sie unter Inside the Microsoft-Build-Engine: Using MSBuild and Team Foundation Build by Sayed Ibrahim Hashimi and William Bartholomew, ISBN: 978-0-7356-4524-0.

Was ist ein Webbereitstellungspaket?

Wenn Sie ein Webanwendungsprojekt erstellen und bereitstellen, entweder mithilfe von Visual Studio 2010 oder mithilfe von MSBuild direkt, ist das Endergebnis in der Regel ein Webbereitstellungspaket. Das Webbereitstellungspaket ist eine .zip-Datei. Es enthält alles, was IIS und Web Deploy benötigen, um Ihre Webanwendung neu zu erstellen, einschließlich:

  • Die kompilierte Ausgabe Ihrer Webanwendung, einschließlich Inhalt, Ressourcendateien, Konfigurationsdateien, JavaScript- und CSS-Ressourcen (Cascading Stylesheets) usw.
  • Assemblys für Ihr Webanwendungsprojekt und für alle Projekte, auf die in Der Projektmappe verwiesen wird.
  • SQL-Skripts zum Generieren von Datenbanken, die Sie mit Ihrer Webanwendung bereitstellen.

Nachdem das Webbereitstellungspaket generiert wurde, können Sie es auf verschiedene Arten auf einem IIS-Webserver veröffentlichen. Sie können es beispielsweise remote bereitstellen, indem Sie den Web Deploy Remote Agent-Dienst oder den Web Deploy-Handler auf dem Zielwebserver verwenden, oder Sie können iis-Manager verwenden, um das Paket manuell auf den Zielwebserver zu importieren. Weitere Informationen zu diesen Bereitstellungsansätzen finden Sie unter Auswählen des richtigen Ansatzes für die Webbereitstellung.

Wie funktioniert der Buildprozess?

Dies zeigt, was geschieht, wenn Sie ein Webanwendungsprojekt erstellen und packen:

Was geschieht, wenn Sie ein Webanwendungsprojekt erstellen und packen?

Wenn Sie ein Webanwendungsprojekt erstellen, generiert der Buildprozess eine Datei namens [Projektname].SourceManifest.xml. Zusammen mit der Projektdatei und der Buildausgabe teilt diese SourceManifest.xml-Datei Web Deploy mit, was sie in das Webbereitstellungspaket einschließen muss. Mithilfe dieser Eingaben generiert Web Deploy ein Webbereitstellungspaket namens [Projektname].zip.

Neben dem Webbereitstellungspaket generiert der Buildprozess zwei Dateien, die Ihnen bei der Verwendung des Pakets helfen können:

  • Die Datei .deploy.cmd enthält einen Satz parametrisierter Web Deploy-Befehle (MSDeploy.exe), die Ihr Webbereitstellungspaket auf einem IIS-Remotewebserver veröffentlichen. Das Ausführen der Datei .deploy.cmd mit den entsprechenden Parametern bietet in der Regel eine schnellere und einfachere Alternative zum manuellen Erstellen der MSDeploy.exe-Befehle selbst.
  • Die SetParameters.xml-Datei stellt einen Satz von Parameterwerten für den befehl MSDeploy.exe bereit. Diese Werte umfassen Eigenschaften wie den Namen der IIS-Webanwendung, für die Sie das Paket bereitstellen möchten, die Werte aller Dienstendpunkte und Verbindungszeichenfolgen, die in der web.config-Datei definiert sind, sowie alle Bereitstellungseigenschaftswerte, die auf den Projekteigenschaftenseiten definiert sind.

Die SetParameters.xml-Datei ist der Schlüssel zum Verwalten des Bereitstellungsprozesses. Diese Datei wird dynamisch entsprechend dem Inhalt Ihres Webanwendungsprojekts generiert. Wenn Sie ihrer web.config-Datei beispielsweise eine Verbindungszeichenfolge hinzufügen, erkennt der Buildprozess automatisch die Verbindungszeichenfolge, parametrisiert die Bereitstellung entsprechend und erstellt einen Eintrag in der SetParameters.xml-Datei , damit Sie die Verbindungszeichenfolge im Rahmen des Bereitstellungsprozesses ändern können. Im nächsten Thema , Konfigurieren von Parametern für die Webpaketbereitstellung, wird die Rolle dieser Datei ausführlicher erläutert und die verschiedenen Möglichkeiten beschrieben, wie Sie sie während des Build- und Bereitstellungsvorgangs ändern können.

Hinweis

In Visual Studio 2010 unterstützt WPP das Vorkompilieren der Seiten in einer Webanwendung vor dem Packen nicht. Die nächste Version von Visual Studio und WPP enthält die Möglichkeit, eine Webanwendung als Paketoption vorkompilieren zu können.

Zusammenfassung

Dieses Thema bot eine Übersicht über den Build- und Paketerstellungsprozess für Webanwendungsprojekte in Visual Studio 2010. Es wurde beschrieben, wie Sie mit dem WPP Web Deploy-Befehle aus MSBuild aufrufen können, und es wurde erläutert, wie der Build- und Paketerstellungsprozess funktioniert.

Nachdem Sie ein Webbereitstellungspaket erstellt haben, besteht Ihr nächster Schritt darin, es bereitzustellen. Weitere Informationen hierzu finden Sie unter Konfigurieren von Parametern für die Bereitstellung von Webpaketen und Bereitstellen von Webpaketen.

Weitere Informationen

Die nächsten Themen in diesem Tutorial , Konfigurieren von Parametern für die Bereitstellung von Webpaketen und Bereitstellen von Webpaketen, enthalten Anleitungen zur Verwendung des von Ihnen erstellten Webpakets. Das letzte Tutorial dieser Reihe, Advanced Enterprise Web Deployment, enthält Anleitungen zum Anpassen und Behandeln von Problemen beim Packen.

Eine ausführlichere Einführung in Projektdateien und das WPP finden Sie unter Inside the Microsoft-Build-Engine: Using MSBuild and Team Foundation Build by Sayed Ibrahim Hashimi and William Bartholomew, ISBN: 978-0-7356-4524-0.