怎样启用net 3.5 sp1,启用net 3.5
chanong
|昨天分享了《如何让.NET应用使用更大的内存》,有同学说他们很多遗留项目不能用32位迁移,所以最好加32位,开辟大内存。事实证明这一切非常简单。
如何查看Large Address Aware(Large Address Aware[3G交换机])最常用的工具是dnSpy(可以在参考资料中下载)
打开此软件,将经过验证的MemeryTest(32)应用程序直接拖入其中,以显示组装相关信息。当您在步骤的第二步中编辑模块时,您将看到该应用程序的PE 标头。
可以看到,默认是i386机器,并且没有选择默认大地址支持。
64位应用程序默认是AMD64机器,默认选择Large Address Aware。这也符合我昨天分享的文章中所说的。默认情况下启用64 位应用程序。
.Net 8 应用程序我碰巧检查了一个现代的.Net 8 应用程序,发现dnSpy 标头信息是:
您可以直接在文件头中看到结果。
如何更改和启用Large Address Aware(大地址感知[3G交换机])dnSpy 最简单的解决方案是使用dnSpy,直接勾选复选框,然后保存项目。
再次打开,你会看到它发生了变化。
editbin.exe 和dumpbin.exe 工具包含在Visual Studio 中。我的工具路径是:
C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.38.33130\bin\Hostx86\x86 然后使用以下相关命令更改(启用)应用程序的3G 开关: 待办事项。
.\editbin.exe /largeaddressaware \'E:\MemoryTest.exe\'使用以下命令验证更改是否成功:
.\dumpbin.exe /headers \'E:\MemoryTest.exe\'具体的例子是:
默认情况下,不启用32 位应用程序的查看。
通过输入
输入.\editbin.exe /largeaddressaware \'E:\MemoryTest\bin\x86\Debug\MemoryTest.exe\' 后,它看起来像这样:
设置完成后,再次查看,已经启用。
dotnetCampus.LargeAddressAware 这是我在搜索时发现的另一个很棒的库,它的介绍支持.NET Core 和.NET Framework。
使用起来也非常简单,直接应用nuget包即可。
编译生成的时候可以直接看到3G开关打开了。
使用方法非常简单
实际的原理分析可以看这张图,实际上是用微软提供的工具修改的。
从工程中可以看到编译时开关是打开的。很好的解决方案。
综上所述,大多数仍然使用32位应用程序的场景都是在非常旧的环境中运行的传统旧项目。 (几百G的内存应该超过一切)。
再次感谢所有提供反馈的人。
代码地址https://github.com/kesshei/MemeryTest.git
https://gitee.com/kesshei/MemeryTest.git
参考地址:《dnspy》 https://github.com/dnSpy/dnSpy 《dotnetCampus.LargeAddressAware》 https://github.com/dotnet-campus/dotnetCampus.LargeAddressAware 一键连续读取3次。谢谢老大的支持,您的支持就是我的动力!








