Kompilowanie i tworzenie pakietów projektów aplikacji internetowych

Autor : Jason Lee

Gdy chcesz wdrożyć projekt aplikacji internetowej w środowisku serwera zdalnego, pierwszym zadaniem jest skompilowanie projektu i wygenerowanie pakietu wdrożeniowego w Internecie. W tym temacie opisano sposób działania procesu kompilacji dla projektów aplikacji internetowych. W szczególności wyjaśniono w nim następujące elementy:

  • Jak potok publikowania sieci Web (WPP) rozszerza proces kompilacji w celu uwzględnienia funkcji wdrażania.
  • Sposób, w jaki narzędzie Internet Information Services (IIS) Web Deployment Tool (Web Deploy) przekształca aplikację internetową w pakiet wdrożeniowy.
  • Jak działa proces kompilowania i tworzenia pakietów oraz jakie pliki są tworzone.

W programie Visual Studio 2010 proces kompilowania i wdrażania projektów aplikacji internetowych jest obsługiwany przez program WPP. Program WPP udostępnia zestaw obiektów docelowych Microsoft Build Engine (MSBuild), które rozszerzają funkcjonalność programu MSBuild i umożliwiają integrację z programem Web Deploy. W programie Visual Studio można zobaczyć tę rozszerzoną funkcjonalność na stronach właściwości projektu aplikacji internetowej. Strona Pakiet/Publikowanie w sieci Web wraz ze stroną Pakiet/Publikowanie kodu SQL umożliwia skonfigurowanie sposobu tworzenia pakietu projektu aplikacji internetowej na potrzeby wdrożenia po zakończeniu procesu kompilacji.

Strona Pakiet/Publikowanie w sieci Web wraz ze stroną Package/Publish S Q L umożliwia skonfigurowanie sposobu spakowania projektu aplikacji internetowej na potrzeby wdrożenia po zakończeniu procesu kompilacji.

Jak działa program WPP?

Jeśli przyjrzysz się plikowi projektu dla projektu aplikacji internetowej opartej na języku C#, zobaczysz, że importuje on dwa pliki targets.

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

Pierwsza instrukcja Import jest wspólna dla wszystkich projektów Visual C#. Ten plik, Microsoft.CSharp.targets, zawiera elementy docelowe i zadania specyficzne dla języka Visual C#. Na przykład w tym miejscu jest wywoływane zadanie kompilatora języka C# (Csc). Plik Microsoft.CSharp.targets z kolei importuje plik Microsoft.Common.targets . Definiuje obiekty docelowe wspólne dla wszystkich projektów, takich jak Kompilacja, Ponowne kompilowanie, Uruchamianie, Kompilowanie i Czyszczenie. Druga instrukcja Import jest specyficzna dla projektów aplikacji internetowych. Plik Microsoft.WebApplication.targets z kolei importuje plik Microsoft.Web.Publishing.targets . Plik Microsoft.Web.Publishing.targets zasadniczo jest plikiem WPP. Definiuje obiekty docelowe, takie jak Package i MSDeployPublish, które wywołują narzędzie Web Deploy w celu wykonania różnych zadań wdrażania.

Aby dowiedzieć się, jak są używane dodatkowe elementy docelowe, w przykładowym rozwiązaniu Contact Manager otwórz plik Publish.proj i zapoznaj się z obiektem docelowym BuildProjects .

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

Ten element docelowy używa zadania MSBuild do kompilowania różnych projektów. Zwróć uwagę na właściwości DeployOnBuild i DeployTarget :

  • Właściwość DeployOnBuild=true zasadniczo oznacza "Chcę wykonać dodatkowy element docelowy po pomyślnym zakończeniu kompilacji".
  • Właściwość DeployTarget identyfikuje nazwę obiektu docelowego, który ma zostać wykonany, gdy właściwość DeployOnBuild jest równa true. W tym przypadku określasz, że program MSBuild ma wykonać element docelowy pakietu po utworzeniu projektu.

Element docelowy pakietu jest zdefiniowany w pliku Microsoft.Web.Publishing.targets . Zasadniczo ten element docelowy pobiera dane wyjściowe kompilacji projektu aplikacji internetowej i przekształca go w pakiet wdrożeniowy sieci Web, który można opublikować na serwerze internetowym usług IIS.

Uwaga

Aby wyświetlić plik projektu (na przykład ContactManager.Mvc.csproj) w programie Visual Studio 2010, należy najpierw zwolnić projekt z rozwiązania. W oknie Eksplorator rozwiązań kliknij prawym przyciskiem myszy węzeł projektu, a następnie kliknij polecenie Zwolnij projekt. Ponownie kliknij prawym przyciskiem myszy węzeł projektu, a następnie kliknij polecenie Edytuj[plik projektu]). Plik projektu zostanie otwarty w nieprzetworzonym formularzu XML. Pamiętaj, aby ponownie załadować projekt po zakończeniu.
Aby uzyskać więcej informacji na temat obiektów docelowych, zadań i instrukcji importu programu MSBuild, zobacz Understanding the Project File (Opis pliku projektu). Aby uzyskać bardziej szczegółowe wprowadzenie do plików projektu i programu WPP, zobacz Inside the Microsoft Build Engine: Using MSBuild and Team Foundation Build by Sayed Ibrahim Hashimi and William Bartholomew, ISBN: 978-0-7356-4524-0.

Co to jest pakiet wdrożeniowy sieci Web?

Podczas kompilowania i wdrażania projektu aplikacji internetowej przy użyciu programu Visual Studio 2010 lub bezpośrednio przy użyciu programu MSBuild wynik końcowy jest zazwyczaj pakietem wdrożeniowym internetowym. Pakiet wdrażania sieci Web jest plikiem .zip. Zawiera wszystkie elementy potrzebne w usługach IIS i Web Deploy w celu ponownego utworzenia aplikacji internetowej, w tym:

  • Skompilowane dane wyjściowe aplikacji internetowej, w tym zawartość, pliki zasobów, pliki konfiguracji, javaScript i kaskadowe zasoby arkuszy stylów (CSS) itd.
  • Zestawy dla projektu aplikacji internetowej i dla wszystkich projektów, do których się odwołujesz w ramach rozwiązania.
  • Skrypty SQL do generowania dowolnych baz danych wdrażanych za pomocą aplikacji internetowej.

Po wygenerowaniu pakietu wdrażania sieci Web można opublikować go na serwerze internetowym usług IIS na różne sposoby. Można na przykład wdrożyć go zdalnie, określając docelową usługę Web Deploy Remote Agent lub program obsługi web deploy na docelowym serwerze sieci Web lub ręcznie zaimportować pakiet na docelowym serwerze sieci Web za pomocą Menedżera usług IIS. Aby uzyskać więcej informacji na temat tych podejść do wdrożenia, zobacz Wybieranie odpowiedniego podejścia do wdrażania w Internecie.

Jak działa proces kompilacji?

Pokazuje to, co się stanie podczas kompilowanie i pakowanie projektu aplikacji internetowej:

Co się stanie podczas kompilowanie i pakowanie projektu aplikacji internetowej.

Podczas tworzenia projektu aplikacji internetowej proces kompilacji generuje plik o nazwie [nazwa projektu].SourceManifest.xml. Wraz z plikiem projektu i danymi wyjściowymi kompilacji ten plik .SourceManifest.xml informuje narzędzie Web Deploy o tym, czego potrzebuje do uwzględnienia w pakiecie wdrożeniowym sieci Web. Przy użyciu tych danych wejściowych narzędzie Web Deploy generuje pakiet wdrożeniowy sieci Web o nazwie [nazwa projektu].zip.

Oprócz pakietu wdrożeniowego w Internecie proces kompilacji generuje dwa pliki, które mogą pomóc w użyciu pakietu:

  • Plik .deploy.cmd zawiera zestaw sparametryzowanych poleceń web Deploy (MSDeploy.exe), które publikują pakiet wdrożeniowy w Internecie na zdalnym serwerze sieci Web usług IIS. Uruchomienie pliku .deploy.cmd z odpowiednimi parametrami zwykle zapewnia szybszą i łatwiejszą alternatywę dla ręcznego konstruowania MSDeploy.exe poleceń samodzielnie.
  • Plik SetParameters.xml zawiera zestaw wartości parametrów polecenia MSDeploy.exe. Te wartości obejmują właściwości, takie jak nazwa aplikacji internetowej usług IIS, do której chcesz wdrożyć pakiet, wartości dowolnych punktów końcowych usługi i parametrów połączenia zdefiniowanych w pliku web.config oraz wszystkie wartości właściwości wdrożenia zdefiniowane na stronach właściwości projektu.

Plik SetParameters.xml jest kluczem do zarządzania procesem wdrażania. Ten plik jest generowany dynamicznie zgodnie z zawartością projektu aplikacji internetowej. Jeśli na przykład dodasz parametry połączenia do pliku web.config , proces kompilacji automatycznie wykryje parametry połączenia, odpowiednio sparametryzuje wdrożenie i utworzy wpis w pliku SetParameters.xml , aby umożliwić modyfikowanie parametrów połączenia w ramach procesu wdrażania. W następnym temacie Configuring Parameters for Web Package Deployment (Konfigurowanie parametrów wdrażania pakietu internetowego) opisano bardziej szczegółowo rolę tego pliku i opisano różne sposoby modyfikowania go podczas kompilowania i wdrażania.

Uwaga

W programie Visual Studio 2010 program WPP nie obsługuje wstępnej kompilacji stron w aplikacji internetowej przed pakowaniem. Następna wersja programu Visual Studio i programu WPP będzie obejmować możliwość prekompilowania aplikacji internetowej jako opcji pakowania.

Podsumowanie

Ten temat zawiera omówienie procesu kompilowania i tworzenia pakietów dla projektów aplikacji internetowych w programie Visual Studio 2010. Opisano w nim, jak program WPP umożliwia wywoływanie poleceń Web Deploy z programu MSBuild i wyjaśniono, jak działa proces kompilowania i tworzenia pakietów.

Po utworzeniu pakietu wdrożeniowego w Internecie następnym krokiem jest wdrożenie go. Aby uzyskać więcej informacji na ten temat, zobacz Configuring Parameters for Web Package Deployment and Deploying Web Packages (Konfigurowanie parametrów wdrażania pakietów internetowych i wdrażania pakietów internetowych).

Dalsze informacje

Następne tematy w tym samouczku Konfigurowanie parametrów wdrażania pakietów internetowych i wdrażania pakietów internetowych zawierają wskazówki dotyczące korzystania z utworzonego pakietu internetowego. Ostatni samouczek z tej serii Advanced Enterprise Web Deployment zawiera wskazówki dotyczące dostosowywania i rozwiązywania problemów z procesem pakowania.

Aby uzyskać bardziej szczegółowe wprowadzenie do plików projektu i programu WPP, zobacz Inside the Microsoft Build Engine: Using MSBuild and Team Foundation Build by Sayed Ibrahim Hashimi and William Bartholomew, ISBN: 978-0-7356-4524-0.