다음을 통해 공유


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를 참조하십시오.

Aa983464.collapse_all(ko-kr,VS.110).gif클래스 파일 컴파일

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

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

클래스 파일 형식

설명

독립 실행형

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

코드 숨김

ASP.NET 웹 페이지의 표시 및 기타 동작을 정의하는 사용자 정의 코드입니다.

디자이너

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

Aa983464.collapse_all(ko-kr,VS.110).gif컴파일 옵션 사용자 지정

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

빌드 작업 속성 설정

기본적으로 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의 웹 사이트 프로젝트 비교

기타 리소스

MSBuild