<useLegacyJit> 元素

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

configuration
  runtime
    <useLegacyJit>

语法

<useLegacyJit enabled=0|1 />

元素名称 useLegacyJit 区分大小写。

特性和元素

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

特性

属性 描述
enabled 必需的特性。

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

enabled 特性

说明
0 公共语言运行时使用 .NET Framework 4.6 及更高版本的中的 64 位 JIT 编译器。
1 公共语言运行时使用较旧的 64 位 JIT 编译器。

子元素

父元素

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

注解

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

注意

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

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

  • 设置环境变量

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

    COMPLUS_useLegacyJit=0|1  
    

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

  • 添加注册表项

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

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

示例

下面的配置文件禁用新版 64 位 JIT 编译器,改用旧版 64 位 JIT 编译器进行编译。

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

另请参阅