使用osx.11.0-arm64 RID执行dotnet publish报错如何解决
.NET 6 Preview 7 macOS ARM64 发布报错问题解答
核心结论
.NET 6 Preview 7 虽然已经在runtime.json中收录了osx.11.0-arm64、osx-arm64等ARM64架构macOS的RID定义,但是该预览版本没有内置对应RID的独立应用主机(apphost)二进制文件,属于预览版的已知缺陷,并非RID列表标注错误。
可行解决方案
- 优先升级到.NET 6 RC1及以上版本,从RC1开始官方已经完整适配了Apple Silicon架构的全量发布组件,直接发布不会再触发该报错
- 若必须保留使用.NET 6 Preview 7,可选择两种临时绕过方式:
- 禁用应用主机生成:在项目.csproj文件的
<PropertyGroup>节点中添加配置<UseAppHost>false</UseAppHost>,发布后的程序可通过dotnet 你的应用名.dll命令启动 - 手动补全apphost文件:下载对应版本的osx-arm64 apphost二进制,放到SDK对应目录
/usr/local/share/dotnet/sdk/6.0.100-preview.7.21379.14/AppHostTemplates/osx-arm64/native/,不存在的目录可手动创建
- 禁用应用主机生成:在项目.csproj文件的
可排查的遗漏配置项
- 确认安装的是ARM64原生版本的.NET 6 Preview 7 SDK,而非运行在Rosetta转译层的x64版本SDK,x64版本SDK默认不携带ARM64架构的apphost文件
- 执行发布命令时检查参数是否正确,完整参考命令为
dotnet publish -r osx.11.0-arm64 -c Release - 确认项目配置没有全局RID覆盖逻辑,排除global.json、导入的第三方项目配置修改了RID的匹配规则
内容的提问来源于stack exchange,提问作者muszeo
相关产品推荐
相关产品推荐

