怎樣啟用net 3.5 sp1,啟用net 3.5
chanong
昨天分享了《如何讓.NET應(yīng)用使用更大的內(nèi)存》,有同學(xué)說他們很多遺留項(xiàng)目不能用32位遷移,所以最好加32位,開辟大內(nèi)存。事實(shí)證明這一切非常簡(jiǎn)單。
如何查看Large Address Aware(Large Address Aware[3G交換機(jī)])最常用的工具是dnSpy(可以在參考資料中下載)
打開此軟件,將經(jīng)過驗(yàn)證的MemeryTest(32)應(yīng)用程序直接拖入其中,以顯示組裝相關(guān)信息。當(dāng)您在步驟的第二步中編輯模塊時(shí),您將看到該應(yīng)用程序的PE 標(biāo)頭。
可以看到,默認(rèn)是i386機(jī)器,并且沒有選擇默認(rèn)大地址支持。
64位應(yīng)用程序默認(rèn)是AMD64機(jī)器,默認(rèn)選擇Large Address Aware。這也符合我昨天分享的文章中所說的。默認(rèn)情況下啟用64 位應(yīng)用程序。
.Net 8 應(yīng)用程序我碰巧檢查了一個(gè)現(xiàn)代的.Net 8 應(yīng)用程序,發(fā)現(xiàn)dnSpy 標(biāo)頭信息是:
您可以直接在文件頭中看到結(jié)果。
如何更改和啟用Large Address Aware(大地址感知[3G交換機(jī)])dnSpy 最簡(jiǎn)單的解決方案是使用dnSpy,直接勾選復(fù)選框,然后保存項(xiàng)目。
再次打開,你會(huì)看到它發(fā)生了變化。
editbin.exe 和dumpbin.exe 工具包含在Visual Studio 中。我的工具路徑是:
C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.38.33130\bin\Hostx86\x86 然后使用以下相關(guān)命令更改(啟用)應(yīng)用程序的3G 開關(guān): 待辦事項(xiàng)。
.\editbin.exe /largeaddressaware \'E:\MemoryTest.exe\'使用以下命令驗(yàn)證更改是否成功:
.\dumpbin.exe /headers \'E:\MemoryTest.exe\'具體的例子是:
默認(rèn)情況下,不啟用32 位應(yīng)用程序的查看。
通過輸入
輸入.\editbin.exe /largeaddressaware \'E:\MemoryTest\bin\x86\Debug\MemoryTest.exe\' 后,它看起來像這樣:
設(shè)置完成后,再次查看,已經(jīng)啟用。
dotnetCampus.LargeAddressAware 這是我在搜索時(shí)發(fā)現(xiàn)的另一個(gè)很棒的庫(kù),它的介紹支持.NET Core 和.NET Framework。
使用起來也非常簡(jiǎn)單,直接應(yīng)用nuget包即可。
編譯生成的時(shí)候可以直接看到3G開關(guān)打開了。
使用方法非常簡(jiǎn)單
實(shí)際的原理分析可以看這張圖,實(shí)際上是用微軟提供的工具修改的。
從工程中可以看到編譯時(shí)開關(guān)是打開的。很好的解決方案。
綜上所述,大多數(shù)仍然使用32位應(yīng)用程序的場(chǎng)景都是在非常舊的環(huán)境中運(yùn)行的傳統(tǒng)舊項(xiàng)目。 (幾百G的內(nèi)存應(yīng)該超過一切)。
再次感謝所有提供反饋的人。
代碼地址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 一鍵連續(xù)讀取3次。謝謝老大的支持,您的支持就是我的動(dòng)力!








