dotnet 9 已知问题 默认开启 CET 导致进程崩溃
官方文档: Breaking change: CET supported by default - .NET Microsoft Learn
表现:
调用 OpenFileDialog 的 ShowDialog 将会异常崩溃,崩溃异常是 FAST_FAIL_SET_CONTEXT_DENIED
或退出错误码为 0xc0000409 STATUS_STACK_BUFFER_OVERRUN
修复的代码:
此问题已在 https://github.com/dotnet/runtime/pull/109074 修复
永久解决方法:
更新 dotnet sdk 版本,再次构建发布
理论分析更新 dotnet runtime 也有用,但我没有尝试过,欢迎大佬补充
临时解决方法:
如果不便更新 dotnet sdk 版本,可通过如下设置禁用 CET 开启
<CETCompat>false</CETCompat>
以上设置放在 csproj 项目文件的 PropertyGroup 里面,更改之后的 csproj 代码大概如下
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net9.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
<CETCompat>false</CETCompat>
</PropertyGroup>
</Project>
相关问题:
博客园博客只做备份,博客发布就不再更新,如果想看最新博客,请访问 https://blog.lindexi.com/
如图片看不见,请在浏览器开启不安全http内容兼容

本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。欢迎转载、使用、重新发布,但务必保留文章署名[林德熙](https://www.cnblogs.com/lindexi)(包含链接:https://www.cnblogs.com/lindexi ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。如有任何疑问,请与我[联系](mailto:lindexi_gd@163.com)。
标签:
dotnet
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· 实操Deepseek接入个人知识库
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· 易语言 —— 开山篇