關(guān)于.net9發(fā)布單體exe程序無法打開問題詳解
當前位置:點晴教程→知識管理交流
→『 技術(shù)文檔交流 』
一、疑難雜癥?? 某天,開開心心的使用了最新的.net9開發(fā)了一個winform程序,在發(fā)布成x64架構(gòu)的單文件exe后,在電腦上面竟然打不開,經(jīng)過多次嘗試后發(fā)現(xiàn)x86版本的在本地電腦上測試沒有問題,但是一發(fā)布成x64模式則會進行報錯 二、場景重現(xiàn) ![]() 去微軟的開源庫查查是否有這方面issue,一查發(fā)現(xiàn)罪魁禍首竟然是.net9sdk的問題,看來出現(xiàn)這個問題的人還不少,報錯的環(huán)境也是各種各樣的 三、問題導致原因?? 1.在特定的VMware 的虛擬機運行時會導致此種情況 2.在特定的win10以及之前版本上會出現(xiàn) 3.在系統(tǒng)電腦安裝了防病毒軟件(綠盾、360,等) 在看了多個issue之后,找到了罪魁禍首,程序啟動及崩潰只有在使用最新的.NET9的sdk上在發(fā)布x64版本時會出現(xiàn)這種情況,微軟在.NET 9 Preview 6開始,CET 會被強制開啟。apphost會強制加上一個頭部,標記支持 CET。在新的 Intel CPU + 新的 Windows 下,會被執(zhí)行 CET。但是,如果程序本身是不支持,又或者程序所依賴的 nuget 包不支持 CET 的話,程序就會直接崩潰,沒有任何提示,甚至連程序的 main 都進不去,log 也打不出來。 所以說,我之前添加的全局錯誤日志為什么沒有抓到這個異常,原來在運行時就已經(jīng)崩潰了 四、如何解決?? 1.不要使用x64進行發(fā)布,測試使用x86發(fā)布后可以正常打開 2.在受影響機器上面不要通過雙擊生成的.exe應(yīng)用程序,通過 PowerShell 或 CMD 可正常運行 3.在受影響機器上面打開windows安全種-應(yīng)用和瀏覽控制-Exploit Protection-程序設(shè)置,添加主程序的名字,例如“工具.exe”,點擊自定義,把“硬件強制實施的堆棧保護”中,“替代系統(tǒng)設(shè)置”勾上,保持在“關(guān)”的狀態(tài),保存。再打開程序就可以了。 4.最后一個就是關(guān)閉.net9的cet功能,在程序的 問題到這就解決了,當從.net8升級到.ne9后,沒想到還會遇到這種疑難雜癥,看來在每一個大版本更新之后,還是要慎重,當然自身的調(diào)試debug能力也得有,出現(xiàn)問題的時候能夠定位到問題點,沒有解決思路的時候不如去官方的issue上面看看,可能會有驚喜哦! ?轉(zhuǎn)自https://www.cnblogs.com/sc-Free-Die/p/19075260 該文章在 2025/9/6 15:27:25 編輯過 |
關(guān)鍵字查詢
相關(guān)文章
正在查詢... |