Freigeben über


ASP.NET Webbereitstellung mit Visual Studio: Befehlszeilenbereitstellung

Von Tom Dykstra

Startprojekt herunterladen

In dieser Lernprogrammreihe wird gezeigt, wie Sie mithilfe von Visual Studio 2012 oder Visual Studio 2010 eine ASP.NET Webanwendung für Azure-App Service Web-Apps oder einem Drittanbieter-Hostinganbieter bereitstellen (veröffentlichen). Informationen zur Reihe finden Sie im ersten Lernprogramm in der Reihe.

Übersicht

In diesem Lernprogramm erfahren Sie, wie Sie die Visual Studio-Webveröffentlichungspipeline über die Befehlszeile aufrufen. Dies ist nützlich für Szenarien, in denen Sie den Bereitstellungsprozess automatisieren möchten, anstatt ihn manuell in Visual Studio auszuführen, in der Regel mithilfe eines Quellcodeverwaltungssystems.

Ändern der Bereitstellung

Aktuell zeigt die Seite "Info" den Vorlagencode an.

Informationen zur Seite mit Vorlagencode

Sie ersetzen dies durch Code, der eine Zusammenfassung der Schülerregistrierung anzeigt.

Öffnen Sie die About.aspx Seite, löschen Sie das gesamte Markup innerhalb des MainContent Content Elements, und fügen Sie das folgende Markup an dessen Stelle ein:

<h2>Student Body Statistics</h2>
    <asp:ObjectDataSource ID="StudentStatisticsObjectDataSource" runat="server" TypeName="ContosoUniversity.BLL.SchoolBL"
        SelectMethod="GetStudentStatistics" DataObjectTypeName="ContosoUniversity.DAL.EnrollmentDateGroup">
    </asp:ObjectDataSource>
    <asp:GridView ID="StudentStatisticsGridView" runat="server" AutoGenerateColumns="False"
        DataSourceID="StudentStatisticsObjectDataSource">
        <Columns>
            <asp:BoundField DataField="EnrollmentDate" DataFormatString="{0:d}" HeaderText="Date of Enrollment"
                ReadOnly="True" SortExpression="EnrollmentDate" />
            <asp:BoundField DataField="StudentCount" HeaderText="Students" ReadOnly="True"
                SortExpression="StudentCount" />
        </Columns>
    </asp:GridView>

Führen Sie das Projekt aus, und wählen Sie die Seite "Info " aus.

Seite „Info“

Bereitstellen auf Test mithilfe der Befehlszeile

Sie werden keine weitere Datenbankänderung bereitstellen. Deaktivieren Sie daher die DbDacFx-Datenbankbereitstellung für die Aspnet-ContosoUniversity-Datenbank. Öffnen Sie den Assistenten "Web veröffentlichen", und deaktivieren Sie in jedem der drei Veröffentlichungsprofile das Kontrollkästchen "Datenbank aktualisieren" auf der Registerkarte "Einstellungen ".

Suchen Sie auf der Windows 8-Startseite nach der Entwickler-Eingabeaufforderung für VS2012.

Klicken Sie mit der rechten Maustaste auf das Symbol für die Entwickler-Eingabeaufforderung für VS2012 , und klicken Sie auf "Als Administrator ausführen".

Geben Sie den folgenden Befehl an der Eingabeaufforderung ein, und ersetzen Sie den Pfad zur Lösungsdatei durch den Pfad zu Ihrer Lösungsdatei:

msbuild C:\ContosoUniversity\ContosoUniversity.sln /p:DeployOnBuild=true /p:PublishProfile=Test

MSBuild erstellt die Lösung und stellt sie in der Testumgebung bereit.

Befehlszeilenausgabe

Öffnen Sie einen Browser, und wechseln Sie zu " und klicken Sie dann auf die Seite "http://localhost/ContosoUniversityInfo", um zu überprüfen, ob die Bereitstellung erfolgreich war.

Wenn Sie keine Kursteilnehmer im Test erstellt haben, wird unter der Überschrift "Statistik der Kursteilnehmer" eine leere Seite angezeigt. Wechseln Sie zur Seite "Kursteilnehmer ", klicken Sie auf "Kursteilnehmer hinzufügen", und fügen Sie einige Kursteilnehmer hinzu, und kehren Sie dann zur Seite " Info " zurück, um Schülerstatistiken anzuzeigen.

Screenshot der Statistik des Schülertexts auf der Seite

Befehlszeilenoptionen für Tastenkombinationen

Der von Ihnen eingegebene Befehl hat den Lösungsdateipfad und zwei Eigenschaften an MSBuild übergeben:

msbuild C:\ContosoUniversity\ContosoUniversity.sln /p:DeployOnBuild=true 
/p:PublishProfile=Test

Bereitstellen der Lösung im Vergleich zur Bereitstellung einzelner Projekte

Wenn Sie die Lösungsdatei angeben, werden alle Projekte in der Lösung erstellt. Wenn Sie über mehrere Webprojekte in der Lösung verfügen, gilt das folgende MSBuild-Verhalten:

  • Die Eigenschaften, die Sie in der Befehlszeile angeben, werden an jedes Projekt übergeben. Daher muss jedes Webprojekt über ein Veröffentlichungsprofil mit dem von Ihnen angegebenen Namen verfügen. Wenn Sie angeben/p:PublishProfile=Test, muss jedes Webprojekt über ein Veröffentlichungsprofil mit dem Namen "Test" verfügen.
  • Sie können ein Projekt erfolgreich veröffentlichen, wenn ein anderes projekt nicht einmal erstellt wird. Weitere Informationen finden Sie im Stackoverflow-Thread MSBuild mit zwei Paketen.

Wenn Sie ein einzelnes Projekt anstelle einer Projektmappe angeben, müssen Sie einen Parameter hinzufügen, der die Visual Studio-Version angibt. Wenn Sie Visual Studio 2012 verwenden, ähnelt die Befehlszeile dem folgenden Beispiel:

msbuild C:\ContosoUniversity\ContosoUniversity\ContosoUniversity.csproj /p:DeployOnBuild=true /p:PublishProfile=Test /p:VisualStudioVersion=11.0

Die Versionsnummer für Visual Studio 2010 ist 10.0. Weitere Informationen finden Sie in Visual Studio-Projektkompatibilität und VisualStudioVersion im Blog von Sayed Hashimi.

Angeben des Veröffentlichungsprofils

Sie können das Veröffentlichungsprofil anhand des Namens oder durch den vollständigen Pfad zur PUBXML-Datei angeben, wie im folgenden Beispiel gezeigt:

msbuild C:\ContosoUniversity\ContosoUniversity.sln /p:DeployOnBuild=true /p:PublishProfile=C:\ContosoUniversity\ContosoUniversity\Properties\PublishProfiles\Test.pubxml

Für die Befehlszeilenveröffentlichung unterstützte Webveröffentlichungsmethoden

Drei Veröffentlichungsmethoden werden für die Befehlszeilenveröffentlichung unterstützt:

  • MSDeploy - Veröffentlichen mithilfe von Web Deploy.
  • Package – Veröffentlichen durch Erstellen eines Web Deploy-Pakets. Sie müssen das Paket separat vom MSBuild-Befehl installieren, der es erstellt.
  • FileSystem - Veröffentlichen Durch Kopieren von Dateien in einen angegebenen Ordner.

Angeben der Buildkonfiguration und -plattform

Die Buildkonfiguration und Plattform muss in Visual Studio oder in der Befehlszeile festgelegt werden. Die Veröffentlichungsprofile enthalten Eigenschaften, die benannt LastUsedBuildConfiguration sind und LastUsedPlatform, aber Sie können diese Eigenschaften nicht festlegen, um zu bestimmen, wie das Projekt erstellt wird. Weitere Informationen finden Sie unter MSBuild: Festlegen der Konfigurationseigenschaft im Blog von Sayed Hashimi.

Bereitstellen in der Stagingumgebung

Zum Bereitstellen in Azure müssen Sie das Kennwort zur Befehlszeile hinzufügen. Wenn Sie das Kennwort im Veröffentlichungsprofil in Visual Studio gespeichert haben, wurde es in verschlüsselter Form in der .pubxml.user-Datei gespeichert. Auf diese Datei wird von MSBuild nicht zugegriffen, wenn Sie eine Befehlszeilenbereitstellung durchführen. Daher müssen Sie das Kennwort in einem Befehlszeilenparameter übergeben.

  1. Kopieren Sie das Kennwort, das Sie aus der publishsettings-Datei benötigen, die Sie zuvor für die Stagingwebsite heruntergeladen haben. Das Kennwort ist der Wert des userPWD Attributs für das Web Deploy-Element publishProfile .

    Web Deploy password

  2. Suchen Sie auf der Windows 8-Startseite nach der Entwickler-Eingabeaufforderung für VS2012, und klicken Sie auf das Symbol, um die Eingabeaufforderung zu öffnen. (Sie müssen sie dieses Mal nicht als Administrator öffnen, da Sie auf dem lokalen Computer nicht auf IIS bereitgestellt werden.)

  3. Geben Sie den folgenden Befehl an der Eingabeaufforderung ein, und ersetzen Sie den Pfad zur Lösungsdatei durch den Pfad zu Ihrer Lösungsdatei und das Kennwort mit Ihrem Kennwort:

    msbuild C:\ContosoUniversity\ContosoUniversity.sln /p:DeployOnBuild=true /p:PublishProfile=Staging /p:Password=hdNSWsbuqno7J5uqnwKafwlfNPt1DSco7J5uqnwKafwlfNPt1DSpKHuYgCco7J5 /p:AllowUntrustedCertificate=true
    

    Beachten Sie, dass diese Befehlszeile einen zusätzlichen Parameter enthält: /p:AllowUntrustedCertificate=true. Da dieses Lernprogramm geschrieben wird, muss die AllowUntrustedCertificate Eigenschaft festgelegt werden, wenn Sie sie über die Befehlszeile in Azure veröffentlichen. Wenn der Fix für diesen Fehler veröffentlicht wird, benötigen Sie diesen Parameter nicht.

  4. Öffnen Sie einen Browser, und wechseln Sie zur URL Ihrer Stagingwebsite, und klicken Sie dann auf die Seite "Info ", um zu überprüfen, ob die Bereitstellung erfolgreich war.

    Wie Sie bereits für die Testumgebung gesehen haben, müssen Sie möglicherweise einige Schüler erstellen, um Statistiken auf der Seite "Info " anzuzeigen.

Bereitstellen für die Produktion

Der Prozess für die Bereitstellung in der Produktion ähnelt dem Prozess für das Staging.

  1. Kopieren Sie das Kennwort, das Sie aus der publishsettings-Datei benötigen, die Sie zuvor für die Produktionswebsite heruntergeladen haben.

  2. Öffnen Sie die Eingabeaufforderung für Entwickler für VS2012.

  3. Geben Sie den folgenden Befehl an der Eingabeaufforderung ein, und ersetzen Sie den Pfad zur Lösungsdatei durch den Pfad zu Ihrer Lösungsdatei und das Kennwort mit Ihrem Kennwort:

    msbuild C:\ContosoUniversity\ContosoUniversity.sln /p:DeployOnBuild=true /p:PublishProfile=Production /p:Password=hdNSWsbuqnwKafwlo7J5uqnwKafwlfNPt1DSqnwKafwlfNPt1DSpKHuYgCco7J5 /p:AllowUntrustedCertificate=true
    

    Bei einer echten Produktionswebsite würden Sie die app_offline.htm Datei in der Regel vor der Bereitstellung auf den Standort kopieren und nach erfolgreicher Bereitstellung löschen.

  4. Öffnen Sie einen Browser, und wechseln Sie zur URL Ihrer Stagingwebsite, und klicken Sie dann auf die Seite "Info ", um zu überprüfen, ob die Bereitstellung erfolgreich war.

Zusammenfassung

Sie haben nun ein Anwendungsupdate mithilfe der Befehlszeile bereitgestellt.

Screenshot der Seite

Im nächsten Lernprogramm sehen Sie ein Beispiel für das Erweitern der Webveröffentlichungspipeline. Im Beispiel wird gezeigt, wie Sie Dateien bereitstellen, die nicht im Projekt enthalten sind.