关于.net9发布单体exe程序无法打开问题详解
当前位置:点晴教程→知识管理交流
→『 技术文档交流 』
一、疑难杂症📍 某天,开开心心的使用了最新的.net9开发了一个winform程序,在发布成x64架构的单文件exe后,在电脑上面竟然打不开,经过多次尝试后发现x86版本的在本地电脑上测试没有问题,但是一发布成x64模式则会进行报错 二、场景重现 ![]() 去微软的开源库查查是否有这方面issue,一查发现罪魁祸首竟然是.net9sdk的问题,看来出现这个问题的人还不少,报错的环境也是各种各样的 三、问题导致原因🐵 1.在特定的VMware 的虚拟机运行时会导致此种情况 2.在特定的win10以及之前版本上会出现 3.在系统电脑安装了防病毒软件(绿盾、360,等) 在看了多个issue之后,找到了罪魁祸首,程序启动及崩溃只有在使用最新的.NET9的sdk上在发布x64版本时会出现这种情况,微软在.NET 9 Preview 6开始,CET 会被强制开启。apphost会强制加上一个头部,标记支持 CET。在新的 Intel CPU + 新的 Windows 下,会被执行 CET。但是,如果程序本身是不支持,又或者程序所依赖的 nuget 包不支持 CET 的话,程序就会直接崩溃,没有任何提示,甚至连程序的 main 都进不去,log 也打不出来。 所以说,我之前添加的全局错误日志为什么没有抓到这个异常,原来在运行时就已经崩溃了 四、如何解决🌵 1.不要使用x64进行发布,测试使用x86发布后可以正常打开 2.在受影响机器上面不要通过双击生成的.exe应用程序,通过 PowerShell 或 CMD 可正常运行 3.在受影响机器上面打开windows安全种-应用和浏览控制-Exploit Protection-程序设置,添加主程序的名字,例如“工具.exe”,点击自定义,把“硬件强制实施的堆栈保护”中,“替代系统设置”勾上,保持在“关”的状态,保存。再打开程序就可以了。 4.最后一个就是关闭.net9的cet功能,在程序的 问题到这就解决了,当从.net8升级到.ne9后,没想到还会遇到这种疑难杂症,看来在每一个大版本更新之后,还是要慎重,当然自身的调试debug能力也得有,出现问题的时候能够定位到问题点,没有解决思路的时候不如去官方的issue上面看看,可能会有惊喜哦! 转自https://www.cnblogs.com/sc-Free-Die/p/19075260 该文章在 2025/9/6 15:27:25 编辑过 |
关键字查询
相关文章
正在查询... |