ASP.NET wdrażanie w internecie przy użyciu programu Visual Studio: wdrażanie wiersza polecenia

Autor : Tom Dykstra

Pobierz projekt startowy

W tej serii samouczków pokazano, jak wdrożyć (opublikować) aplikację internetową ASP.NET w celu Azure App Service Web Apps lub dostawcy hostingu innej firmy przy użyciu programu Visual Studio 2012 lub Visual Studio 2010. Aby uzyskać informacje o serii, zobacz pierwszy samouczek z serii.

Omówienie

W tym samouczku pokazano, jak wywołać potok publikowania internetowego programu Visual Studio z poziomu wiersza polecenia. Jest to przydatne w scenariuszach, w których chcesz zautomatyzować proces wdrażania zamiast wykonywać go ręcznie w programie Visual Studio, zazwyczaj przy użyciu systemu kontroli wersji kodu źródłowego.

Wprowadzanie zmian w celu wdrożenia

Obecnie na stronie Informacje jest wyświetlany kod szablonu.

Informacje o stronie z kodem szablonu

Zastąpisz to kodem, który wyświetla podsumowanie rejestracji uczniów.

Otwórz stronę About.aspx , usuń wszystkie znaczniki wewnątrz MainContentContent elementu i wstaw następujące znaczniki w swoim miejscu:

<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>

Uruchom projekt i wybierz stronę Informacje .

Strona Informacje

Wdrażanie do testowania przy użyciu wiersza polecenia

Nie wdrożysz innej zmiany bazy danych, dlatego wyłącz wdrożenie bazy danych dbDacFx dla bazy danych aspnet-ContosoUniversity. Otwórz kreatora Publikowanie sieci Web , a w każdym z trzech profilów publikowania wyczyść pole wyboru Aktualizuj bazę danych na karcie Ustawienia .

Na stronie Start systemu Windows 8 wyszukaj wiersz polecenia dla deweloperów dla programu VS2012.

Kliknij prawym przyciskiem myszy ikonę wiersza polecenia dla deweloperów dla programu VS2012 i kliknij polecenie Uruchom jako administrator.

Wprowadź następujące polecenie w wierszu polecenia, zastępując ścieżkę do pliku rozwiązania ścieżką do pliku rozwiązania:

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

Program MSBuild kompiluje rozwiązanie i wdraża je w środowisku testowym.

Dane wyjściowe wiersza polecenia

Otwórz przeglądarkę i przejdź do http://localhost/ContosoUniversitystrony , a następnie kliknij stronę Informacje , aby sprawdzić, czy wdrożenie zakończyło się pomyślnie.

Jeśli nie utworzono żadnych uczniów w teście, zobaczysz pustą stronę w nagłówku Statystyka treści uczniów . Przejdź do strony Uczniowie , kliknij pozycję Dodaj ucznia i dodaj uczniów, a następnie wróć do strony Informacje , aby wyświetlić statystyki uczniów.

Zrzut ekranu przedstawiający statystykę treści ucznia na stronie Informacje.

Opcje wiersza polecenia klucza

Wprowadzone polecenie przekazało ścieżkę pliku rozwiązania i dwie właściwości do programu MSBuild:

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

Wdrażanie rozwiązania w porównaniu z wdrażaniem poszczególnych projektów

Określenie pliku rozwiązania powoduje skompilowanie wszystkich projektów w rozwiązaniu. Jeśli w rozwiązaniu znajduje się wiele projektów internetowych, stosowane jest następujące zachowanie programu MSBuild:

  • Właściwości określone w wierszu polecenia są przekazywane do każdego projektu. W związku z tym każdy projekt internetowy musi mieć profil publikowania o określonej nazwie. W przypadku określenia /p:PublishProfile=Testparametru każdy projekt internetowy musi mieć profil publikowania o nazwie Test.
  • Można pomyślnie opublikować jeden projekt, gdy inny nawet nie kompiluje. Aby uzyskać więcej informacji, zobacz wątek stackoverflow MSBuild kończy się niepowodzeniem z dwoma pakietami.

Jeśli określisz pojedynczy projekt zamiast rozwiązania, musisz dodać parametr określający wersję programu Visual Studio. Jeśli używasz programu Visual Studio 2012, wiersz polecenia będzie podobny do następującego przykładu:

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

Numer wersji programu Visual Studio 2010 to 10.0. Aby uzyskać więcej informacji, zobacz Artykuł zgodność projektu programu Visual Studio i VisualStudioVersion na blogu Sayeda Hashimiego.

Określanie profilu publikowania

Profil publikowania można określić według nazwy lub pełnej ścieżki do pliku pubxml , jak pokazano w poniższym przykładzie:

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

Metody publikowania w sieci Web obsługiwane na potrzeby publikowania w wierszu polecenia

W przypadku publikowania w wierszu polecenia obsługiwane są trzy metody publikowania:

  • MSDeploy — Publikowanie przy użyciu narzędzia Web Deploy.
  • Package — Opublikuj, tworząc pakiet Web Deploy. Musisz zainstalować pakiet oddzielnie od polecenia MSBuild, które go tworzy.
  • FileSystem — Publikuj, kopiując pliki do określonego folderu.

Określanie konfiguracji kompilacji i platformy

Konfiguracja kompilacji i platforma muszą być ustawione w programie Visual Studio lub w wierszu polecenia. Profile publikowania zawierają właściwości o nazwie LastUsedBuildConfiguration i LastUsedPlatform, ale nie można ustawić tych właściwości w celu określenia sposobu kompilowania projektu. Aby uzyskać więcej informacji, zobacz MSBuild: how to set the configuration property on Sayed Hashimi's blog (Jak ustawić właściwość konfiguracji na blogu Sayed Hashimi).

Wdrażanie w środowisku przejściowym

Aby wdrożyć na platformie Azure, musisz dodać hasło do wiersza polecenia. Jeśli hasło zostało zapisane w profilu publikowania w programie Visual Studio, zostało ono zapisane w postaci zaszyfrowanej w pliku .pubxml.user . Ten plik nie jest dostępny w programie MSBuild podczas wdrażania wiersza polecenia, dlatego musisz przekazać hasło w parametrze wiersza polecenia.

  1. Skopiuj hasło potrzebne z pliku publishsettings pobranego wcześniej dla przejściowej witryny sieci Web. Hasło jest wartością atrybutu userPWD elementu Web Deploy publishProfile .

    Hasło web deploy

  2. Na stronie Start systemu Windows 8 wyszukaj pozycję Wiersz polecenia dla deweloperów dla programu VS2012, a następnie kliknij ikonę, aby otworzyć wiersz polecenia. (Nie musisz otwierać go jako administrator tym razem, ponieważ nie wdrażasz w usługach IIS na komputerze lokalnym).

  3. Wprowadź następujące polecenie w wierszu polecenia, zastępując ścieżkę do pliku rozwiązania ścieżką do pliku rozwiązania i hasłem przy użyciu hasła:

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

    Zwróć uwagę, że ten wiersz polecenia zawiera dodatkowy parametr: /p:AllowUntrustedCertificate=true. Podczas pisania AllowUntrustedCertificate tego samouczka właściwość musi być ustawiana podczas publikowania na platformie Azure z poziomu wiersza polecenia. Po wydaniu poprawki dla tej usterki nie będzie potrzebny ten parametr.

  4. Otwórz przeglądarkę i przejdź do adresu URL witryny przejściowej, a następnie kliknij stronę Informacje , aby sprawdzić, czy wdrożenie zakończyło się pomyślnie.

    Jak pokazano wcześniej w środowisku testowym, może być konieczne utworzenie niektórych uczniów w celu wyświetlenia statystyk na stronie Informacje .

Wdrażanie w środowisku produkcyjnym

Proces wdrażania w środowisku produkcyjnym jest podobny do procesu przejściowego.

  1. Skopiuj hasło potrzebne z pliku publishsettings pobranego wcześniej dla produkcyjnej witryny sieci Web.

  2. Otwórz wiersz polecenia dla deweloperów dla programu VS2012.

  3. Wprowadź następujące polecenie w wierszu polecenia, zastępując ścieżkę do pliku rozwiązania ścieżką do pliku rozwiązania i hasłem przy użyciu hasła:

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

    W przypadku rzeczywistej lokacji produkcyjnej, jeśli nastąpiła również zmiana bazy danych, zazwyczaj należy skopiować plik app_offline.htm do lokacji przed wdrożeniem i usunąć go po pomyślnym wdrożeniu.

  4. Otwórz przeglądarkę i przejdź do adresu URL witryny przejściowej, a następnie kliknij stronę Informacje , aby sprawdzić, czy wdrożenie zakończyło się pomyślnie.

Podsumowanie

Teraz wdrożono aktualizację aplikacji przy użyciu wiersza polecenia.

Zrzut ekranu przedstawiający stronę Informacje z wyświetlonymi statystykami treści uczniów.

W następnym samouczku zobaczysz przykład rozszerzania potoku publikowania internetowego. W przykładzie pokazano, jak wdrażać pliki, które nie są uwzględnione w projekcie.