<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\.NETFramework
或HKEY_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>
另请参阅
- 使用配置文件配置应用
- runtime> 元素
- configuration> 元素
- 缓解:新的 64 位 JIT 编译器