<useLegacyJit> 元素

确定公共语言运行时是否使用旧版 64 位 JIT 编译器进行实时编译。

<配置>
   <运行时>
     <useLegacyJit>

Syntax

<useLegacyJit enabled=0|1 />

元素名称 useLegacyJit 区分大小写。

属性和元素

下列各节描述了特性、子元素和父元素。

特性

Attribute Description
enabled 必需属性。

指定运行时是否使用旧版 64 位 JIT 编译器。

enabled 属性

价值 Description
0 公共语言运行时使用 .NET Framework 4.6 及更高版本中包括的新 64 位 JIT 编译器。
1 公共语言运行时使用较旧的 64 位 JIT 编译器。

子元素

None

父元素

元素 Description
configuration 公共语言运行时和 .NET Framework 应用程序所使用的每个配置文件中的根元素。
runtime 包含有关运行时初始化选项的信息。

注解

从 .NET Framework 4.6 开始,公共语言运行时默认使用新的 64 位编译器进行 Just-In-Time (JIT) 编译。 在某些情况下,这可能会导致与由 64 位 JIT 编译器早期版本编译的 JIT 编译的应用程序代码的行为不同。 通过将元素的属性<useLegacyJit>设置为enabled1,可以禁用新的 64 位 JIT 编译器,而是使用旧版 64 位 JIT 编译器编译应用。

注释

<useLegacyJit> 元素仅影响 64 位 JIT 编译。 使用 32 位 JIT 编译器进行编译不受影响。

可以使用其他两种方式来启用旧版 64 位 JIT 编译器,而不是使用配置文件设置:

  • 设置环境变量

    COMPLUS_useLegacyJit 环境变量设置为( 0 使用新的 64 位 JIT 编译器)或 1 (使用较旧的 64 位 JIT 编译器):

    COMPLUS_useLegacyJit=0|1
    

    环境变量具有 全局范围,这意味着它会影响计算机上运行的所有应用程序。 如果已设置,则应用程序配置文件设置可以重写它。 环境变量名称不区分大小写。

  • 添加注册表项

    可以通过向注册表中的或HKEY_CURRENT_USER\SOFTWARE\Microsoft\.NETFramework键添加REG_DWORDHKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework来启用旧版 64 位 JIT 编译器。 该值命名 useLegacyJit。 如果值为 0,则使用新的编译器。 如果值为 1,则会启用旧版 64 位 JIT 编译器。 注册表值名称不区分大小写。

    将值添加到 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework 密钥会影响计算机上运行的所有应用。 将值添加到 HKEY_CURRENT_USER\SOFTWARE\Microsoft\.NETFramework 密钥会影响当前用户运行的所有应用。 如果计算机配置了多个用户帐户,则只有当前用户运行的应用才会受到影响,除非此值也添加到其他用户的注册表项中。 将 <useLegacyJit> 元素添加到配置文件会覆盖注册表设置(如果存在)。

Example

以下配置文件使用新的 64 位 JIT 编译器禁用编译,而是使用旧的 64 位 JIT 编译器。

<?xml version ="1.0"?>
<configuration>
  <runtime>
    <useLegacyJit enabled="1" />
  </runtime>
</configuration>

另请参阅