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 特性。

指定是否应编译调试二进制文件(而非发布的二进制文件)。

默认值为 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 特性。

指定应用程序重新启动前可能对资源进行动态重新编译的次数。 在全局和应用程序级别(而非目录级别)支持此特性。

注意注意
每当程序集失效且删除失败时,ASP.NET 都会增加 NumRecompilesBeforeAppRestart 属性。

默认值为 15。

optimizeCompilations

可选的 Boolean 特性。

指定在顶级文件被更改时,动态编译是否将重新编译整个网站。 顶级文件包括 Global.asax 文件与 Bin 和 App_Code 文件夹中的所有文件。 如果为 True,则仅重新编译更改过的文件。

默认值为 False。

有关更多信息,请参见 了解 ASP.NET 动态编译

strict

可选的 Boolean 特性。

指定是否启用 Visual Basic strict 编译选项。

默认值为 False。

targetFramework

可选的 String 特性。

指定网站的目标 .NET Framework 的版本。

默认值为 Null。

如果省略此特性,则目标版本将由 Web.config 文件中的其他设置以及与网站相关联的 IIS 应用程序池确定。 有关更多信息,请参见CompilationSection.TargetFramework针对 ASP.NET Web 项目的 .NET Framework 多目标功能

tempDirectory

可选的 String 特性。

指定编译期间用于临时文件存储的目录。

默认值为空字符串 ("")。

如果存在空字符串且当前过程具有所需的访问权限,则文件存储在 %FrameworkInstallLocation%\ Temporary ASP.NET Files 目录中。

请注意,只有具有高信任权限的过程可以访问 %FrameworkInstallLocation%\ Temporary ASP.NET Files。

urlLinePragmas

可选的 Boolean 特性。

指定编译器是否应使用 URL(而非物理路径)。

默认值为 False。

子元素

元素

说明

assemblies

定义一个程序集名称的集合,这些程序集在 ASP.NET 资源编译期间使用。

buildProviders

定义用于编译自定义资源文件的生成提供程序的集合。 有关更多信息,请参见 BuildProvider 属性。

codeSubDirectories

定义一个有序子目录集合,这些子目录包含在运行时编译的文件。

compilers

定义一个编译器选项的集合。

注意注意
在 .NET Framework 2.0 及更高版本中,此元素已被否决,而改为使用 system.codeDom 节中的编译器元素。但是,使用 compilation 元素的 compilers 子元素仍然有效,并且将重写位于 system.codedom 节中的 compilers 元素。

expressionBuilders

定义一个要在编译期间使用的资源字符串的集合。 资源字符串将前缀与表达式生成器关联起来。

folderLevelBuildProviders

定义用于编译特定文件夹中自定义资源文件的生成提供程序的集合。 生成提供程序映射到文件扩展名并用于生成指定类型的文件的代码。 有关更多信息,请参见 FolderLevelBuildProvider 属性。

父元素

元素

说明

configuration

指定公共语言运行时和 .NET Framework 应用程序所使用的每个配置文件中均需要的根元素。

system.web

在配置文件中指定 ASP.NET 配置设置的根元素,它包含配置 ASP.NET Web 应用程序行为的配置元素。

备注

compilation 元素配置 ASP.NET 用于编译应用程序的所有编译设置。

在 .NET Framework 2.0 版中,compilation 元素的 compilers 子元素已弃用,改用 system.codeDom 节的 compilers 元素。 但是,使用 compilation 元素的 compilers 子元素仍然有效,并且将重写位于 system.codedom 节中的 compilers 元素。

默认配置

下面的默认 compilation 元素不是在 Machine.config 文件或根 Web.config 文件中显式配置的。 但是,它是应用程序返回的默认配置。 项将添加到根 Web.config 文件中的 assembliesbuildProvidersexpressionBuilders 集合。

<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 Internet 信息服务 (IIS) 5.0、5.1 或 6.0

.NET Framework 1.0、1.1、2.0

Visual Studio 2003 或 Visual Studio 2005

请参见

任务

如何:使用位置设置配置特定目录

如何:锁定 ASP.NET 配置设置

参考

system.web 元素(ASP.NET 设置架构)

compilation 的 assemblies 元素(ASP.NET 设置架构)

compilation 的 buildProviders 元素(ASP.NET 设置架构)

compilation 的 codeSubDirectories 元素(ASP.NET 设置架构)

compilation 的 compilers 元素(ASP.NET 设置架构)

用于编译的 expressionBuilders 元素(ASP.NET 设置架构)

configuration 元素(常规设置架构)

System.Configuration

System.Web.Configuration

CompilationSection

Compilation

概念

ASP.NET 编译概述

ASP.NET 网页语法概述

ASP.NET 配置文件层次结构和继承

保证 ASP.NET 配置的安全

ASP.NET 配置方案

针对 ASP.NET Web 项目的 .NET Framework 多目标功能

其他资源

常规配置设置 (ASP.NET)

ASP.NET 配置设置

ASP.NET 网站管理

ASP.NET 配置文件

ASP.NET 配置 API