判斷通用語言執行時是否使用舊有的 64 位元 JIT 編譯器進行即時編譯。
語法
<useLegacyJit enabled=0|1 />
元素名稱 useLegacyJit 是區分大小寫的。
屬性和元素
下列章節說明屬性、子元素和父元素。
Attributes
| Attribute | Description |
|---|---|
enabled |
必要屬性。 指定執行時是否使用舊有的 64 位元 JIT 編譯器。 |
啟用屬性
| 價值觀 | 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>設enabled為 1,你可以停用新的 64 位元 JIT 編譯器,改用舊有的 64 位元 JIT 編譯器編譯你的應用程式。
備註
此 <useLegacyJit> 元素僅影響 64 位元 JIT 編譯。 使用 32 位元 JIT 編譯器編譯則不受影響。
你可以用兩種方式啟用舊有的 64 位元 JIT 編譯器,而非使用設定檔設定:
設定環境變數
將環境變數設定
COMPLUS_useLegacyJit為0(使用新的 64 位元 JIT 編譯器)或1(使用舊的 64 位元 JIT 編譯器):COMPLUS_useLegacyJit=0|1環境變數具有 全域範圍,意即影響機器上所有執行的應用程式。 若設定為此,該應用程式的設定檔設定可覆蓋此功能。 環境變數名稱不區分大小寫。
新增登錄檔鍵
你可以透過在登錄檔中的 or
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>設定檔會覆寫登錄檔設定(如果存在的話)。
Example
以下設定檔禁止與新 64 位元 JIT 編譯器編譯,改用舊有的 64 位元 JIT 編譯器。
<?xml version ="1.0"?>
<configuration>
<runtime>
<useLegacyJit enabled="1" />
</runtime>
</configuration>