由于各种原因,原来的DotNet项目在win10(默认安装了DotNet4.6.1)上可能遇到各种问题完全无法理解,这时候可以跟代码看看问题是否是出现在.Net框架上,如果是这样,可以尝试禁用DotNet4.6.1默认的新一代JIT,回归原来的LegacyJIT,再看问题是否依旧。
禁用RyuJIT
微软提供了三种方法来禁用RyuJIT而使用上一代的LegacyJit:
1.给需要试用LegacyJit的程序添加配置文件
- 在
<exename>.exe.config
文件(如果没有就自己新建一个)中添加配置:
useLegacyJit enabled="1"
- 示例:
<configuration>
<runtime>
<useLegacyJit enabled="1" />
</runtime>
</configuration>
- 注意:此方法不适用于ASP.NET网站,该配置在web.confg中无效。
2.添加环境变量
- 可以设置环境变量
COMPLUS_useLegacyJit=1
- 注意:此方法的作用范围为继承了该环境变量的环境,可以只是一个set了该环境变量的命令窗口,可以是在添加了该环境变量的整个系统。
3.修改注册表
- 运行regedit,定位到如下位置:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework
HKEY_CURRENT_USER\SOFTWARE\Microsoft\.NETFramework
- 右键,新建,DWORD(32位)值,名称为
useLegacyJit
值(数据)为1.
参考:https://github.com/Microsoft/dotnet/blob/master/docs/testing-with-ryujit.md