确定公共语言运行时是否使用旧版 64 位 JIT 编译器进行实时编译。
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_DWORD值HKEY_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>