ASP.NET 웹 응용 프로그램 프로젝트 미리 컴파일 개요
기본적으로, 웹 응용 프로그램 프로젝트의 코드 파일은 Microsoft Build Engine(MSBuild)을 사용하여 단일 어셈블리로 미리 컴파일됩니다. ASP.NET 웹 페이지(.aspx), 사용자 정의 컨트롤(.ascx), 및 MVC Razor 뷰는 ASP.NET 컴파일러에 의해 서버에서 동적으로 컴파일됩니다. 웹 페이지, 사용자 정의 컨트롤, 및 Razor 뷰 또한 선택적으로 미리 컴파일 할 수 있습니다.
참고
이 항목은 웹 응용 프로그램 프로젝트에만 적용됩니다.웹 응용 프로그램 프로젝트와 웹 사이트 프로젝트 간의 차이점에 대한 자세한 내용은 웹 응용 프로그램 프로젝트와 Visual Studio의 웹 사이트 프로젝트 비교를 참조하십시오.웹 사이트 프로젝트를 미리 컴파일하는 방법에 대한 자세한 내용은 ASP.NET Web Site Project Precompilation Overview를 참조하십시오.
컴파일 모델
프로젝트의 모든 코드 파일(독립 실행형, 코드 숨김 및 디자이너 클래스 파일)은 단일 어셈블리로 미리 컴파일됩니다. 기본적으로 이 어셈블리는 Bin 폴더에 빌드되어 유지됩니다. 이 컴파일 모델에서는 단일 어셈블리가 생성되므로 어셈블리 이름 및 버전 같은 특성을 지정할 수 있습니다. 출력 어셈블리의 위치도 지정할 수 있습니다. 출력 어셈블리의 위치를 변경하려면 솔루션 탐색기에서 프로젝트 이름을 마우스 오른쪽 단추로 클릭하고 속성을 클릭한 다음 빌드 탭을 클릭합니다. 빌드 탭에 출력 경로 필드가 표시됩니다. 이 필드에서 출력 어셈블리의 경로를 지정할 수 있습니다.
웹 응용 프로그램 프로젝트는 웹 사이트 프로젝트에서처럼 프로젝트 폴더를 사용하는 대신 프로젝트 파일을 사용하여 정의됩니다. 프로젝트 파일은 프로젝트에 포함된 파일을 참조하며, 어셈블리 참조 및 기타 프로젝트 메타데이터 설정을 포함합니다. 프로젝트 폴더에 있지만 프로젝트 파일에 정의되지 않은 파일은 웹 응용 프로그램 프로젝트의 일부로 컴파일되지 않습니다. Visual Studio 또는 Visual Web Developer Express을 통해 추가 및 변경된 프로젝트 설정은 각 프로젝트에 대해 생성된 프로젝트 파일(.*proj)에서 참조합니다.
페이지를 실행하고 디버깅하려면 전체 웹 응용 프로그램 프로젝트를 컴파일해야 합니다. 그러나 Visual Studio 및 Visual Web Developer Express에서는 변경된 파일만 빌드하는 증분 빌드 모델을 사용하므로 전체 웹 응용 프로그램 프로젝트를 빠르게 빌드할 수 있습니다.
자세한 내용은 Web Application Projects Overview를 참조하십시오.
클래스 파일 컴파일
웹 응용 프로그램 프로젝트는 MSBuild를 사용하여 클래스 파일을 컴파일합니다. 이러한 클래스 파일은 단일 어셈블리로 컴파일됩니다. 기본적으로 이 파일은 Bin 폴더에 저장됩니다. 표준 MSBuild 확장성 규칙을 사용하여 컴파일 프로세스를 확장하고 사용자 지정할 수 있습니다. 자세한 내용은 MSBuild를 참조하십시오.
다음 표에서는 단일 어셈블리로 컴파일되는 웹 응용 프로그램 프로젝트 클래스 파일의 형식에 대해 설명합니다.
클래스 파일 형식 |
설명 |
---|---|
독립 실행형 |
만들어 Bin 폴더에 추가할 수 있는 클래스 파일입니다. |
코드 숨김 |
ASP.NET 웹 페이지의 표시 및 기타 동작을 정의하는 사용자 정의 코드입니다. |
디자이너 |
자동 생성되는 코드입니다. .designer 파일은 수정하면 안 됩니다. |
컴파일 옵션 사용자 지정
프로젝트 디자이너 창의 응용 프로그램 속성 페이지에 있는 요소를 사용하여 출력 어셈블리 이름, 버전 및 기타 세부 정보를 지정할 수 있습니다. 또한 프로젝트 디자이너 창의 빌드 페이지를 사용하여 프로젝트의 빌드 구성을 지정할 수 있습니다. 예를 들어 오류 처리 방법을 지정하고 어셈블리 출력에 대한 세부 사항을 지정할 수 있습니다. 또한 빌드 이벤트 속성 페이지에서 값을 설정하여 컴파일하는 동안 빌드 전 및 빌드 후 단계를 추가할 수도 있습니다. 속성 페이지에 대한 자세한 내용은 프로젝트 디자이너 사용자 인터페이스 참조를 참조하십시오.
빌드 작업 속성 설정
기본적으로 MSBuild는 빌드 작업 속성이 컴파일로 설정된 경우에만 웹 응용 프로그램 프로젝트의 클래스 파일을 컴파일합니다. 그러나 웹 응용 프로그램 프로젝트의 App_Code 폴더에 클래스 파일이 포함되어 있으면 이러한 클래스 파일은 ASP.NET을 통해 컴파일됩니다. 이는 빌드 작업이 명시적으로 컴파일로 설정되어 있지 않은 경우에도 마찬가지입니다.
참고
App_Code 폴더는 웹 사이트 프로젝트를 위한 것으로,웹 응용 프로그램 프로젝트에는 일반적으로 포함되지 않습니다.App_Code 폴더에 대한 자세한 내용은 Shared Code Folders in ASP.NET Web Sites를 참조하십시오.
동적 컴파일
프로젝트의 코드 파일은 MSBuild를 사용하여 단일 어셈블리로 미리 컴파일되는 반면 웹 응용 프로그램 프로젝트의 ASP.NET 웹 페이지(.aspx), 사용자 정의 컨트롤(.ascx), 및 MVC Razor 뷰는 ASP.NET 컴파일러에 의해 서버에서 동적으로 컴파일됩니다. 따라서 컴파일 및 배포 후 사이트에서 ASP.NET 웹 페이지, 사용자 지정 컨트롤, 및 Razor 뷰를 제한적으로 변경할 수 있습니다. 예를 들어 컨트롤 배열, 색상, 글꼴 및 기타 페이지 모양을 변경할 수 있습니다. 이러한 변경 작업을 수행한 후 사이트에서 페이지에 대한 요청을 처음으로 받으면 ASP.NET에서는 변경된 파일을 다시 컴파일합니다.
컨트롤을 protected 또는 public으로 설정하면 코드 숨김 파일에서 컨트롤을 정의할 수 있습니다. .aspx 페이지는 코드 숨김 파일에서 상속되므로 해당 컨트롤이 사용됩니다. 다음과 같은 상황에서 컨트롤 정의를 코드 숨김 파일로 이동하면 유용합니다.
컨트롤의 형식을 기본 제공 ASP.NET 형식에서 파생해야 하는 경우
기본 범위가 아닌 다른 컨트롤 범위를 지정하려는 경우. 범위는 public, private, internal, protected, 및 protected internal 등의 액세스 가능성 수준을 나타냅니다.
메타데이터 특성을 컨트롤 선언에 추가하려는 경우
컨트롤 선언에 대한 XML 코드 주석을 작성하려는 경우
컨트롤을 추가하는 방법에 대한 자세한 내용은 How to: Add Controls to an ASP.NET Web Page Programmatically를 참조하십시오.
배포
기본적으로, 모든 클래스 파일이 단일 어셈블리로 컴파일되며, 이는 .aspx, .ascx, .cshtml, 및 vbhtml 파일과 정적 콘텐츠 파일과 함께 해당 어셈블리만 배포되어야 함을 의미합니다. 이 시나리오에서는 브라우저에서 페이지를 요청할 때까지 .aspx, .ascx, .cshtml, 및 .vbhtml 파일의 태그가 실행 가능한 코드로 컴파일되지 않습니다.
그러나 다른 컴파일 및 병합을 지정할 수 있습니다. 예를 들어, .aspx 파일을 미리 컴파일 하거나 또는 다중 어셈블리가 하나 이상 만들어 질 수 있음을 지정할 수 있습니다. 웹 응용 프로그램 프로젝트 컴파일 및 병합 옵션, 이를 지정하는 방법에 대한 추가 정보는 다음 리소스를 참조하십시오.
웹 응용 프로그램 프로젝트를 배포하는 방법에 대한 추가 정보는 Visual Studio 및 ASP.NET에 대한 웹 배포 콘텐츠 맵을 참조하십시오.
참고 항목
개념
Visual Studio 및 ASP.NET에 대한 웹 배포 콘텐츠 맵
웹 응용 프로그램 프로젝트와 Visual Studio의 웹 사이트 프로젝트 비교