<useLegacyJit> 元素
決定通用語言執行平台是否針對 Just-In-Time 編譯使用舊版 64 位元 JIT 編譯器。
Syntax
<useLegacyJit enabled=0|1 />
專案名稱 useLegacyJit
會區分大小寫。
屬性和元素
下列章節說明屬性、子元素和父元素。
屬性
屬性 | 描述 |
---|---|
enabled |
必要屬性。 指定執行階段是否使用舊版 64 位元 JIT 編譯器。 |
已啟用的屬性
值 | 描述 |
---|---|
0 | Common Language Runtime 使用包含在 .NET Framework 4.6 和更新版本中的新 64 位 JIT 編譯程式。 |
1 | 通用語言執行平台使用較舊的 64 位元 JIT 編譯器。 |
子元素
無
父元素
元素 | Description |
---|---|
configuration |
通用語言執行平台和 .NET Framework 應用程式所使用之每個組態檔中的根項目。 |
runtime |
包含有關執行階段初始化選項的資訊。 |
備註
從 .NET Framework 4.6 開始,Common Language Runtime 預設會針對 Just-In-Time (JIT) 編譯使用新的 64 位編譯器。 在某些情況下,這可能會導致與舊版 64 位元 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
環境變數具有「全域範圍」,這表示它會影響電腦執行的所有應用程式。 透過設定可以由應用程式組態檔設定覆寫。 環境變數名稱不區分大小寫。
新增登錄機碼
您可以將新增一個
REG_DWORD
值至登錄的HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework
或HKEY_CURRENT_USER\SOFTWARE\Microsoft\.NETFramework
機碼,以啟用舊版 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>