다음을 통해 공유


웹 응용 프로그램 프로젝트 컴파일

업데이트: 2007년 11월

웹 응용 프로그램 프로젝트 형식은 Microsoft Visual Studio 2005에 도입되었던 웹 사이트 프로젝트 형식을 대체합니다. 웹 응용 프로그램 프로젝트 모델은 Visual Studio .NET 2003 웹 프로젝트 모델을 기반으로 합니다. 이는 Visual Studio .NET 2003 웹 프로젝트를 이후 버전의 Visual Studio로 쉽게 변환하고 필요한 코드 변경 작업을 줄일 목적으로 개발되었습니다. 프로젝트의 코드 파일은 Microsoft Build Engine(MSBuild)을 사용하여 단일 어셈블리로 미리 컴파일됩니다. ASP.NET 웹 페이지(.aspx)와 사용자 정의 컨트롤(.ascx)은 ASP.NET 컴파일러에 의해 서버에서 동적으로 컴파일됩니다.

컴파일 모델

웹 응용 프로그램 프로젝트의 컴파일 모델은 Visual Studio .NET 2003 컴파일 모델과 유사합니다. 프로젝트의 모든 코드 파일(독립 실행형, 코드 숨김 및 디자이너 클래스 파일)은 단일 어셈블리로 미리 컴파일됩니다. 기본적으로 이 어셈블리는 Bin 폴더에 빌드되어 유지됩니다. 이 컴파일 모델에서는 단일 어셈블리가 생성되므로 어셈블리 이름 및 버전 같은 특성을 지정할 수 있습니다. 출력 어셈블리의 위치도 지정할 수 있습니다.

웹 응용 프로그램 프로젝트는 웹 사이트 프로젝트에서처럼 프로젝트 폴더를 사용하는 대신 프로젝트 파일을 사용하여 정의됩니다. 프로젝트 파일에는 프로젝트에 포함된 파일과 어셈블리 참조 및 기타 프로젝트 메타데이터 설정이 들어 있습니다. 프로젝트 폴더에 있지만 프로젝트 파일에 정의되지 않은 파일은 웹 응용 프로그램 프로젝트의 일부로 컴파일되지 않습니다. Visual Studio를 통해 추가 및 변경된 프로젝트 설정은 각 프로젝트에 대해 생성된 프로젝트 파일(.*proj)에서 참조합니다.

페이지를 실행하고 디버깅하려면 전체 웹 응용 프로그램 프로젝트를 컴파일해야 합니다. Visual Studio는 변경된 파일만 빌드하는 증분 빌드 모델을 사용하므로 전체 웹 응용 프로그램 프로젝트를 빨리 빌드할 수 있습니다.

자세한 내용은 웹 응용 프로그램 프로젝트 개요를 참조하십시오.

클래스 파일 미리 컴파일

웹 응용 프로그램 프로젝트는 MSBuild를 사용하여 클래스 파일을 미리 컴파일합니다. 이러한 클래스 파일은 단일 어셈블리로 컴파일됩니다. 기본적으로 이 파일은 Bin 폴더에 저장됩니다. 표준 MSBuild 확장성 규칙을 사용하여 컴파일 프로세스를 확장하고 사용자 지정할 수 있습니다. 자세한 내용은 MSBuild 개요를 참조하십시오.

다음 표에서는 단일 어셈블리로 컴파일되는 웹 응용 프로그램 프로젝트 클래스 파일의 형식에 대해 설명합니다.

클래스 파일 형식

설명

독립 실행형

만들어 Bin 폴더에 추가할 수 있는 클래스 파일입니다.

코드 숨김

콘텐츠 파일과 직접적으로 관련된 사용자 정의 코드입니다.

디자이너

자동 생성되는 코드입니다. .designer 파일은 수정하면 안 됩니다.

컴파일 옵션 사용자 지정

프로젝트 디자이너 창의 응용 프로그램 속성 페이지에 있는 요소를 사용하여 출력 어셈블리 이름, 버전 및 기타 세부 정보를 지정할 수 있습니다. 또한 프로젝트 디자이너 창의 빌드 페이지를 사용하여 프로젝트의 빌드 구성을 지정할 수 있습니다. 예를 들어 오류 처리 방법을 지정하고 어셈블리 출력에 대한 세부 사항을 지정할 수 있습니다. 또한 빌드 이벤트 속성 페이지에서 값을 설정하여 컴파일하는 동안 빌드 전 및 빌드 후 단계를 추가할 수도 있습니다. 속성 페이지에 대한 자세한 내용은 프로젝트, 사용자 인터페이스 요소를 참조하십시오.

빌드 작업 속성 설정

기본적으로 MSBuild는 빌드 작업 속성이 컴파일로 설정된 경우에만 웹 응용 프로그램 프로젝트의 클래스 파일을 컴파일합니다. 그러나 웹 응용 프로그램 프로젝트의 App_Code 폴더에 클래스 파일이 포함되어 있으면 이러한 클래스 파일은 ASP.NET 컴파일러를 통해 컴파일됩니다. 이는 빌드 작업이 명시적으로 컴파일로 설정되어 있지 않은 경우에도 마찬가지입니다.

참고:

App_Code 폴더는 Visual Studio 2005에서 웹 사이트 프로젝트를 위한 것으로, 웹 응용 프로그램 프로젝트에는 일반적으로 포함되지 않습니다. App_Code 폴더에 대한 자세한 내용은 ASP.NET 웹 사이트의 공유 코드 폴더를 참조하십시오.

동적 컴파일

프로젝트의 코드 파일은 MSBuild를 사용하여 단일 어셈블리로 미리 컴파일되는 반면 웹 응용 프로그램 프로젝트의 ASP.NET 웹 페이지(.aspx)와 사용자 정의 컨트롤(.ascx)은 ASP.NET 컴파일러에 의해 서버에서 동적으로 컴파일됩니다. 웹 응용 프로그램 프로젝트에서 웹 페이지와 사용자 정의 컨트롤의 @ Page 또는 @ Control 지시문에 CodeBehind 특성과 Inherits 특성을 사용할 수 있습니다. CodeBehind 특성은 사용할 코드 숨김 파일을 참조합니다. Inherits 특성은 코드 숨김 파일의 네임스페이스 및 클래스를 가리킵니다.

웹 응용 프로그램 프로젝트에서는 컴파일 및 배포 후 사이트에 있는 ASP.NET 웹 페이지를 제한적으로 변경할 수 있습니다. 예를 들어 컨트롤 배열, 색상, 글꼴 및 기타 페이지 모양을 변경할 수 있습니다. 또한 이벤트 처리기 또는 기타 코드가 필요하지 않은 컨트롤을 추가할 수 있습니다. 사이트가 처음으로 실행될 때 ASP.NET은 태그로부터 출력을 만들기 위해 추가 컴파일을 수행합니다.

웹 응용 프로그램 프로젝트 내에서 컨트롤의 선언을 사용자 지정하려면 컨트롤을 .aspx 파일에서 선언적으로 만드는 대신 코드에서 동적으로 만들어야 합니다. 다음과 같은 상황에서 컨트롤 선언을 코드 숨김 파일로 이동하면 유용합니다.

  • 컨트롤을 다른 형식으로 지정해야 하는 경우

  • 기본 범위가 아닌 다른 컨트롤 범위를 지정하려는 경우

  • 메타데이터 특성을 컨트롤 선언에 추가하려는 경우

  • 컨트롤 선언에 대한 XML 코드 주석을 작성하려는 경우

컨트롤을 추가하는 방법에 대한 자세한 내용은 방법: 프로그래밍 방식으로 ASP.NET 웹 페이지에 컨트롤 추가를 참조하십시오.

배포

모든 클래스 파일이 단일 어셈블리로 컴파일되므로 .aspx 파일, .ascx 파일 및 기타 정적 콘텐츠 파일과 함께 해당 어셈블리만 배포해야 합니다. 이 모델에서는 .aspx 파일이 브라우저에서 요청할 때까지 컴파일되지 않습니다.

그러나 .aspx 파일을 컴파일한 다음 배포할 단일 어셈블리에 이를 포함할 수도 있습니다. 이렇게 하려면 Visual Studio의 추가 기능으로 다운로드할 수 있는 웹 배포 프로젝트를 사용합니다. 이 추가 기능을 다운로드하려면 ASP.NET 개발자 센터 웹 사이트의 Visual Studio 2005 Web Deployment Projects를 참조하십시오. 웹 응용 프로그램 프로젝트를 배포하는 방법에 대한 자세한 내용은 방법: 웹 응용 프로그램 프로젝트 게시를 참조하십시오.

참고 항목

개념

MSBuild 개요

ASP.NET 웹 사이트의 공유 코드 폴더

참조

프로젝트 디자이너, 빌드 이벤트 페이지(C#)

프로젝트 디자이너, 빌드 페이지(C#)

@ Page

기타 리소스

MSBuild 개념

Web Application Projects

ASP.NET 웹 페이지 모델의 새로운 기능