compilation 요소(ASP.NET 설정 스키마)

[이 설명서는 미리 보기 전용이며, 이후 릴리스에서 변경될 수 있습니다. 비어 있는 항목은 자리 표시자로 포함됩니다.]

ASP.NET에서 응용 프로그램을 컴파일하는 데 사용하는 모든 컴파일 설정을 구성합니다.

<compilation 
   debug="[true|false]"
   batch="[true|false]"
   batchTimeout="number of seconds"
   defaultLanguage="language" 
   explicit="[true|false]" 
   maxBatchSize="maximim number of pages"
   maxBatchGeneratedFileSize="maximum combined size"
   numRecompilesBeforeAppRestart="number"
   strict="[true|false]" 
   tempDirectory="temporary files directory"
   urlLinePragmas="[true|false]"
   optimizeCompilations="[true|false]"
   targetFramework="2.0|3.0|3.5|4.0"
   assemblyPostProcessorType="assembly post processor, assembly"
>
   <assemblies>...</assemblies> 
   <buildProviders>...</buildProviders>
   <folderLevelBuildProviders>...</folderLevelBuildProviders>
   <codeSubDirectories>...</codeSubDirectories>
   <compilers>...</compilers>
   <expressionBuilders>...</expressionBuilders>
</compilation>

특성 및 요소

다음 단원에서는 특성, 자식 요소 및 부모 요소에 대해 설명합니다.

특성

특성

설명

assemblyPostProcessorType

선택적 String 특성입니다.

어셈블리 사후 프로세서를 참조하여 어셈블리에 대한 사후 처리 컴파일 단계를 지정합니다. "어셈블리 사후 프로세서, 어셈블리" 형식을 사용합니다. 어셈블리 사후 프로세서는 IAssemblyPostProcessor 인터페이스를 구현해야 합니다. 이 사후 처리 방법을 사용하면 컴파일 시 디버깅이 수행되며 이는 배포 모드를 지정할 때 재정의할 수 있습니다.

이 특성은 .NET Framework 버전 2.0에서 새로 도입되었습니다.

기본값은 빈 문자열입니다.

batch

선택적 Boolean 특성입니다.

일괄 처리 지원 여부를 나타냅니다.

True이면 파일에 처음 액세스할 때 필요한 컴파일로 인해 지연이 발생하지 않습니다. 이 특성을 True로 설정하면ASP.NET에서는 컴파일되지 않은 모든 파일을 일괄적으로 미리 컴파일하므로 파일을 처음 컴파일하는 경우에는 지연 시간이 훨씬 길어집니다. 그러나 초기 지연 이후에는 다음에 파일에 액세스할 때 컴파일 지연이 발생하지 않습니다.

기본값은 True입니다.

batchTimeout

선택적 TimeSpan 특성입니다.

일괄 처리 컴파일의 시간 초과 기간(초)을 지정합니다. 컴파일이 시간 초과 기간 내에 완료되지 못하면 컴파일러는 현재 페이지에 대한 단일 컴파일 모드로 전환합니다.

기본값은 "900"초(15분)입니다.

debug

선택적 Boolean 특성입니다.

정품(retail) 이진 파일 대신 디버그 이진 파일을 컴파일할지 여부를 지정합니다.

기본값은 False입니다.

defaultLanguage

선택적 String 특성입니다.

동적 컴파일 파일에 사용할 기본 프로그래밍 언어(예: "C#" 또는 "PERL")를 지정합니다. 언어 이름은 system.codeDom 섹션의 compilers 요소 또는 이 요소의 compilers 자식 요소(사용되지 않음)를 사용하여 정의됩니다.

기본값은 "vb"입니다.

explicit

선택적 Boolean 특성입니다.

Microsoft Visual Basic explicit 컴파일 옵션을 설정할지 여부를 지정합니다. True이면 Dim, Private, Public 또는 ReDim 문을 사용하여 모든 변수를 선언해야 합니다.

기본값은 True입니다.

maxBatchGeneratedFileSize

선택적 Int32 특성입니다.

일괄 처리된 컴파일당 생성된 소스 파일의 최대 크기(KB)를 지정합니다. 일반적으로 필요한 실제 비트 수가 적은 경우에는 큰 어셈블리를 메모리에 로드하지 않는 것이 좋습니다. 이렇게 제한하면 시스템을 오버로드하지 않고 응용 프로그램에서 일괄 처리 메커니즘을 사용할 수 있도록 어셈블리 크기를 적절한 범위로 구성할 수 있습니다. 이는 maxBatchSize와 비슷합니다.

기본값은 1000입니다.

maxBatchSize

선택적 Int32 특성입니다.

일괄 처리된 컴파일 당 최대 페이지 수를 지정합니다.

기본값은 1000입니다.

numRecompilesBeforeAppRestart

선택적 Int32 특성입니다.

응용 프로그램이 다시 시작하기 전에 발생할 수 있는 리소스의 동적 재컴파일 수를 지정합니다. 이 특성은 전역 및 응용 프로그램 수준에서 지원되지만 디렉터리 수준에서는 지원되지 않습니다.

NoteNote
ASP.NET에서는 어셈블리가 무효화되었지만 이를 삭제할 수 없을 때마다 NumRecompilesBeforeAppRestart 속성을 증가시킵니다.

기본값은 15입니다.

optimizeCompilations

선택적 Boolean 특성입니다.

최상위 파일이 변경된 경우 동적 컴파일이 전체 사이트를 다시 컴파일할지 여부를 지정합니다. 최상위 파일은 Bin 및 App_Code 폴더의 Global.asax 파일 및 모든 파일이 포함됩니다. True인 경우 변경된 파일만 다시 컴파일됩니다.

기본값은 False입니다.

자세한 내용은 Understanding ASP.NET Dynamic Compilation를 참조하십시오.

strict

선택적 Boolean 특성입니다.

Visual Basic strict 컴파일 옵션을 사용할 것인지 여부를 지정합니다.

기본값은 False입니다.

targetFramework

선택적 String 특성입니다.

웹 사이트의 대상이 되는 .NET Framework 버전을 지정합니다.

기본값은 Null입니다.

이 특성을 생략하면 대상 버전은 Web.config 파일의 다른 설정 및 웹 사이트가 연결된 IIS 응용 프로그램 풀에 의해 결정됩니다. 자세한 내용은 CompilationSection.TargetFramework.NET Framework Targeting for Web Projects을 참조하십시오.

tempDirectory

선택적 String 특성입니다.

컴파일하는 동안 임시 파일을 저장할 디렉터리를 지정합니다.

기본값은 빈 문자열("")입니다.

빈 문자열을 사용하면 현재 프로세스에 필요한 액세스 권한이 있는 경우 파일이 %FrameworkInstallLocation%\ Temporary ASP.NET Files 디렉터리에 저장됩니다.

신뢰 권한이 높은 프로세스만 %FrameworkInstallLocation%\ Temporary ASP.NET Files에 액세스할 수 있습니다.

urlLinePragmas

선택적 Boolean 특성입니다.

컴파일러에서 실제 경로 대신 URL을 사용할 것인지 여부를 지정합니다.

기본값은 False입니다.

자식 요소

요소

설명

assemblies

ASP.NET 리소스를 컴파일하는 동안 사용할 어셈블리 이름의 컬렉션을 정의합니다.

buildProviders

사용자 지정 리소스 파일을 컴파일하는 데 사용되는 빌드 공급자의 컬렉션을 정의합니다. 자세한 내용은 BuildProvider 클래스를 참조하십시오.

codeSubDirectories

런타임에 컴파일되는 파일이 포함된 하위 디렉터리의 정렬된 컬렉션을 정의합니다.

compilers

컴파일러 옵션의 컬렉션을 정의합니다.

NoteNote
.NET Framework 2.0 이상 버전에서는 이 요소 대신 system.codeDom 섹션의 컴파일러 요소를 사용합니다.그러나 compilation 요소의 compilers 자식 요소를 계속 사용할 수 있으며 이를 통해 system.codedom 섹션에 있는 compilers 요소가 재정의됩니다.

expressionBuilders

컴파일하는 동안 사용할 리소스 문자열의 컬렉션을 정의합니다. 리소스 문자열은 접두사와 식 작성기를 연결합니다.

folderLevelBuildProviders

특정 폴더에서 사용자 지정 리소스 파일을 컴파일하는 데 사용되는 빌드 공급자의 컬렉션을 정의합니다. 빌드 공급자는 파일 확장명에 매핑되고 지정된 형식의 파일에서 코드를 생성하는 데 사용됩니다. 자세한 내용은 FolderLevelBuildProvider 클래스를 참조하십시오.

부모 요소

요소

설명

configuration

공용 언어 런타임 및 .NET Framework 응용 프로그램에서 사용하는 모든 구성 파일의 필수 루트 요소를 지정합니다.

system.web

구성 파일에서 ASP.NET 구성 설정에 대한 루트 요소를 지정하며, ASP.NET 웹 응용 프로그램 동작을 구성하는 구성 요소를 포함합니다.

설명

compilation 요소는 ASP.NET에서 응용 프로그램을 컴파일하는 데 사용하는 모든 컴파일 설정을 구성합니다.

.NET Framework 버전 2.0에서는 compilation 요소의 compilers 자식 요소 대신 system.codeDom 섹션의 compilers 요소를 사용합니다. 그러나 compilation 요소의 compilers 자식 요소를 계속 사용할 수 있으며 이를 통해 system.codedom 섹션에 있는 compilers 요소가 재정의됩니다.

기본 구성

다음의 기본 compilation 요소는 Machine.config 파일 또는 루트 Web.config 파일에 명시적으로 구성되어 있지 않습니다. 그러나 이 요소는 응용 프로그램에서 반환하는 기본 구성입니다. 루트 Web.config 파일의 assemblies, buildProvidersexpressionBuilders 컬렉션에 항목이 추가됩니다.

<compilation 
   tempDirectory="" 
   debug="false" 
   strict="false" 
   explicit="true" 
   batch="true" 
   batchTimeout="900" 
   maxBatchSize="1000" 
   maxBatchGeneratedFileSize="1000" 
   numRecompilesBeforeAppRestart="15" 
   defaultLanguage="vb" 
   urlLinePragmas="false" 
   assemblyPostProcessorType=""
>
   <assemblies>
       <clear />
   </assemblies>
   <buildProviders>
       <clear />
   </buildProviders>
   <expressionBuilders>
       <clear />
   </expressionBuilders>
</compilation>

다음의 기본 compilation 요소는 .NET Framework 버전 1.1의 Machine.config 파일에 구성되어 있습니다. .NET Framework 버전 1.0에는 버전 번호를 제외하고 이와 유사한 설정이 있습니다.

<compilation debug="false" explicit="true" defaultLanguage="vb">
   <compilers>
      <compiler language="c#;cs;csharp" extension=".cs" type="Microsoft.CSharp.CSharpCodeProvider, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" warningLevel="1"/>
      <compiler language="vb;vbs;visualbasic;vbscript" extension=".vb" type="Microsoft.VisualBasic.VBCodeProvider, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
      <compiler language="js;jscript;javascript" extension=".js" type="Microsoft.JScript.JScriptCodeProvider, Microsoft.JScript, Version=7.0.5000.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
      <compiler language="VJ#;VJS;VJSharp" extension=".jsl" type="Microsoft.VJSharp.VJSharpCodeProvider, VJSharpCodeProvider, Version=7.0.5000.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/></compilers>
   <assemblies>
      <add assembly="mscorlib"/>
      <add assembly="System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
      <add assembly="System.Web, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
      <add assembly="System.Data, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
      <add assembly="System.Web.Services, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
      <add assembly="System.Xml, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
      <add assembly="System.Drawing, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
      <add assembly="System.EnterpriseServices, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
      <add assembly="System.Web.Mobile, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
      <add assembly="*"/>
   </assemblies>
</compilation>

예제

다음 코드 예제에서는 응용 프로그램에 대해 컴파일 설정을 구성하는 방법을 보여 줍니다.

<configuration>
   <system.web>
      <compilation defaultLanguage="VB"
         targetFramework="4.0"
         debug="true"
         numRecompilesBeforeAppRestart="15">
         <assemblies>
            <add assembly="ADODB"/>
            <add assembly="*"/>
         </assemblies>

         <codeSubDirectories>
           <add directoryName="mySubDir1"/>
           <add directoryName="mySubDir2"/>
           <add directoryName="mySubDir3"/>
         </codeSubDirectories>

         <buildProviders>
            <buildProvider 
               extension=".mafx" type="BuildProviderType, 
                          BuildProviderAssembly"
            />
        </buildProviders>
     </compilation>
   </system.web>
</configuration>

요소 정보

구성 섹션 처리기

CompilationSection

구성 멤버

Compilation

구성 가능한 위치

Machine.config

루트 수준의 Web.config

응용 프로그램 수준의 Web.config

가상 또는 실제 디렉터리 수준의 Web.config

요구 사항

Microsoft IIS(인터넷 정보 서비스) 5.0, 5.1 또는 6.0

.NET Framework 1.0, 1.1, 2.0

Visual Studio 2003 또는 Visual Studio 2005

참고 항목

작업

How to: Configure Specific Folders Using Location Settings

How to: Lock ASP.NET Configuration Settings

참조

system.web 요소(ASP.NET 설정 스키마)

compilation 요소에 대한 assemblies 요소(ASP.NET 설정 스키마)

compilation 요소에 대한 buildProviders 요소(ASP.NET 설정 스키마)

compilation 요소에 대한 codeSubDirectories 요소(ASP.NET 설정 스키마)

compilation 요소에 대한 compilers 요소(ASP.NET 설정 스키마)

compilation 요소에 대한 expressionBuilders 요소(ASP.NET 설정 스키마)

configuration 요소(일반 설정 스키마)

System.Configuration

System.Web.Configuration

CompilationSection

Compilation

개념

ASP.NET Compilation Model

ASP.NET Web Page Syntax Overview

ASP.NET Configuration File Hierarchy

Securing Configuration

Configuration Inheritance

.NET Framework Targeting for Web Projects

기타 리소스

일반 구성 설정(ASP.NET)

ASP.NET 구성 설정

Configuring ASP.NET Applications

ASP.NET Configuration Files

ASP.NET Configuration API