웹 애플리케이션 프로젝트 빌드 및 패키징

작성자 : Jason Lee

원격 서버 환경에 웹 애플리케이션 프로젝트를 배포하려는 경우 첫 번째 작업은 프로젝트를 빌드하고 웹 배포 패키지를 생성하는 것입니다. 이 항목에서는 웹 애플리케이션 프로젝트에서 빌드 프로세스가 작동하는 방식에 대해 설명합니다. 특히 다음을 설명합니다.

  • WPP(웹 게시 파이프라인)가 배포 기능을 포함하도록 빌드 프로세스를 확장하는 방법입니다.
  • IIS(인터넷 정보 서비스) 웹 배포 도구(웹 배포)가 웹 애플리케이션을 배포 패키지로 바꾸는 방법입니다.
  • 빌드 및 패키징 프로세스의 작동 방식과 생성되는 파일

Visual Studio 2010에서는 WPP에서 웹 애플리케이션 프로젝트에 대한 빌드 및 배포 프로세스를 지원합니다. WPP는 MSBuild의 기능을 확장하고 웹 배포와 통합할 수 있도록 하는 MSBuild(Microsoft Build Engine) 대상 집합을 제공합니다. Visual Studio 내에서 웹 애플리케이션 프로젝트의 속성 페이지에서 이 확장된 기능을 볼 수 있습니다. 패키지/게시 웹 페이지는 패키지/게시 SQL 페이지와 함께 빌드 프로세스가 완료될 때 배포를 위해 웹 애플리케이션 프로젝트를 패키지하는 방법을 구성할 수 있습니다.

패키지/게시 웹 페이지를 패키지/게시 S QL 페이지와 함께 빌드 프로세스가 완료될 때 배포를 위해 웹 애플리케이션 프로젝트를 패키지하는 방법을 구성할 수 있습니다.

WPP는 어떻게 작동하나요?

C#기반 웹 애플리케이션 프로젝트의 프로젝트 파일을 살펴보면 두 개의 .targets 파일을 가져오는 것을 볼 수 있습니다.

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

첫 번째 Import 문은 모든 Visual C# 프로젝트에 공통적으로 적용됩니다. Microsoft.CSharp.targets 파일에는 Visual C#과 관련된 대상 및 작업이 포함되어 있습니다. 예를 들어 Csc(C# 컴파일러) 작업은 여기에서 호출됩니다. Microsoft.CSharp.targets 파일은 차례로 Microsoft.Common.targets 파일을 가져옵니다. 빌드, 다시빌드, 실행, 컴파일 및 정리와 같은 모든 프로젝트에 공통적인 대상 정의합니다. 두 번째 Import 문은 웹 애플리케이션 프로젝트와 관련이 있습니다. Microsoft.WebApplication.targets 파일은 차례로 Microsoft.Web.Publishing.targets 파일을 가져옵니다. Microsoft.Web.Publishing.targets 파일은 기본적으로 WPP입니다. 다양한 배포 작업을 완료하기 위해 웹 배포를 호출하는 패키지MSDeployPublish와 같은 대상을 정의합니다.

이러한 추가 대상이 사용되는 방식을 이해하려면 Contact Manager 샘플 솔루션에서 Publish.proj 파일을 열고 BuildProjects 대상을 살펴봅니다.

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

이 대상은 MSBuild 작업을 사용하여 다양한 프로젝트를 빌드합니다. DeployOnBuildDeployTarget 속성을 확인합니다.

  • DeployOnBuild=true 속성은 기본적으로 "빌드가 성공적으로 완료되면 추가 대상을 실행하려고 합니다."를 의미합니다.
  • DeployTarget 속성은 DeployOnBuild 속성이 true일 때 실행할 대상의 이름을 식별합니다. 이 경우 프로젝트를 빌드한 후 MSBuild에서 패키지 대상을 실행하도록 지정합니다.

패키지 대상은 Microsoft.Web.Publishing.targets 파일에 정의되어 있습니다. 기본적으로 이 대상은 웹 애플리케이션 프로젝트의 빌드 출력을 가져와 IIS 웹 서버에 게시할 수 있는 웹 배포 패키지로 바꿉니다.

참고

Visual Studio 2010에서 프로젝트 파일(예: ContactManager.Mvc.csproj)을 보려면 먼저 솔루션에서 프로젝트를 언로드해야 합니다. 솔루션 탐색기 창에서 프로젝트 노드를 마우스 오른쪽 단추로 클릭한 다음 프로젝트 언로드를 클릭합니다. 프로젝트 노드를 다시 마우스 오른쪽 단추로 클릭한 다음 편집[프로젝트 파일])을 클릭합니다. 프로젝트 파일이 원시 XML 형식으로 열립니다. 완료되면 프로젝트를 다시 로드해야 합니다.
MSBuild 대상, 작업 및 가져오기 문에 대한 자세한 내용은 프로젝트 파일 이해를 참조하세요. 프로젝트 파일 및 WPP에 대한 자세한 소개는 Microsoft Build Engine 내부: Sayed Ibrahim Hashimi 및 William Bartholomew의 MSBuild 및 Team Foundation Build 사용, ISBN: 978-0-7356-4524-0을 참조하세요.

웹 배포 패키지란?

Visual Studio 2010을 사용하거나 MSBuild를 직접 사용하여 웹 애플리케이션 프로젝트를 빌드하고 배포하는 경우 최종 결과는 일반적으로 웹 배포 패키지입니다. 웹 배포 패키지는 .zip 파일입니다. 여기에는 다음을 포함하여 웹 애플리케이션을 다시 만들기 위해 IIS 및 웹 배포에 필요한 모든 것이 포함됩니다.

  • 콘텐츠, 리소스 파일, 구성 파일, JavaScript 및 CSS(계단식 스타일시트) 리소스 등을 포함한 웹 애플리케이션의 컴파일된 출력입니다.
  • 웹 애플리케이션 프로젝트 및 솔루션 내의 참조된 프로젝트에 대한 어셈블리입니다.
  • 웹 애플리케이션을 사용하여 배포하는 모든 데이터베이스를 생성하는 SQL 스크립트입니다.

웹 배포 패키지가 생성되면 다양한 방법으로 IIS 웹 서버에 게시할 수 있습니다. 예를 들어 대상 웹 서버에서 웹 배포 원격 에이전트 서비스 또는 웹 배포 처리기를 대상으로 하여 원격으로 배포하거나 IIS 관리자를 사용하여 대상 웹 서버에서 패키지를 수동으로 가져올 수 있습니다. 이러한 배포 방법에 대한 자세한 내용은 웹 배포에 대한 올바른 접근 방식 선택을 참조하세요.

빌드 프로세스는 어떻게 작동하나요?

웹 애플리케이션 프로젝트를 빌드하고 패키지할 때 발생하는 작업을 보여줍니다.

웹 애플리케이션 프로젝트를 빌드하고 패키지할 때 발생하는 작업

웹 애플리케이션 프로젝트를 빌드할 때 빌드 프로세스는 [프로젝트 이름].SourceManifest.xml라는 파일을 생성합니다. 프로젝트 파일 및 빌드 출력과 함께 이 .SourceManifest.xml 파일은 웹 배포 패키지에 포함해야 하는 내용을 웹 배포에 알려줍니다. 이러한 입력을 사용하여 웹 배포는 .zip[프로젝트 이름] 이라는 웹 배포 패키지를 생성합니다.

빌드 프로세스는 웹 배포 패키지와 함께 패키지를 사용하는 데 도움이 되는 두 개의 파일을 생성합니다.

  • .deploy.cmd 파일에는 웹 배포 패키지를 원격 IIS 웹 서버에 게시하는 매개 변수가 있는 웹 배포(MSDeploy.exe) 명령 집합이 포함되어 있습니다. 적절한 매개 변수를 사용하여 .deploy.cmd 파일을 실행하면 일반적으로 MSDeploy.exe 명령을 직접 수동으로 구성하는 대신 더 빠르고 쉽게 사용할 수 있습니다.
  • SetParameters.xml 파일은 MSDeploy.exe 명령에 매개 변수 값 집합을 제공합니다. 이러한 값에는 패키지를 배포하려는 IIS 웹 애플리케이션의 이름, web.config 파일에 정의된 서비스 엔드포인트 및 연결 문자열의 값 및 프로젝트 속성 페이지에 정의된 배포 속성 값과 같은 속성이 포함됩니다.

SetParameters.xml 파일은 배포 프로세스를 관리하는 데 핵심입니다. 이 파일은 웹 애플리케이션 프로젝트의 내용에 따라 동적으로 생성됩니다. 예를 들어 web.config 파일에 연결 문자열을 추가하는 경우 빌드 프로세스는 자동으로 연결 문자열을 검색하고, 그에 따라 배포를 매개 변수화하고, 배포 프로세스의 일부로 연결 문자열을 수정할 수 있도록 SetParameters.xml 파일에 항목을 만듭니다. 다음 항목인 웹 패키지 배포에 대한 매개 변수 구성에서는 이 파일의 역할에 대해 자세히 설명하고 빌드 및 배포 중에 수정할 수 있는 다양한 방법을 설명합니다.

참고

Visual Studio 2010에서 WPP는 패키징 전에 웹 애플리케이션의 페이지 미리 컴파일을 지원하지 않습니다. Visual Studio 및 WPP의 다음 버전에는 웹 애플리케이션을 패키징 옵션으로 미리 컴파일하는 기능이 포함됩니다.

결론

이 항목에서는 Visual Studio 2010의 웹 애플리케이션 프로젝트에 대한 빌드 및 패키징 프로세스에 대한 개요를 제공했습니다. WPP를 통해 MSBuild에서 웹 배포 명령을 호출하는 방법을 설명하고 빌드 및 패키징 프로세스의 작동 방식을 설명했습니다.

웹 배포 패키지를 만든 후 다음 단계는 배포하는 것입니다. 이에 대한 자세한 내용은 웹 패키지 배포에 대한 매개 변수 구성웹 패키지 배포를 참조하세요.

추가 정보

이 자습서의 다음 topics 웹 패키지 배포에 대한 매개 변수 구성웹 패키지 배포에서 만든 웹 패키지를 사용하는 방법에 대한 지침을 제공합니다. 이 시리즈의 마지막 자습서인 Advanced Enterprise Web Deployment는 패키징 프로세스를 사용자 지정하고 문제를 해결하는 방법에 대한 지침을 제공합니다.

프로젝트 파일 및 WPP에 대한 자세한 소개는 Microsoft Build Engine 내부: Sayed Ibrahim Hashimi 및 William Bartholomew의 MSBuild 및 Team Foundation Build 사용, ISBN: 978-0-7356-4524-0을 참조하세요.