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>

相关问题:

posted @   lindexi  阅读(190)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· 实操Deepseek接入个人知识库
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· 易语言 —— 开山篇
点击右上角即可分享
微信分享提示