웹 응용 프로그램 프로젝트 컴파일
업데이트: 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를 참조하십시오. 웹 응용 프로그램 프로젝트를 배포하는 방법에 대한 자세한 내용은 방법: 웹 응용 프로그램 프로젝트 게시를 참조하십시오.