已安装.NET 6.0的Apple Silicon M1(macOS Monterey)设备运行.NET Core项目时libhostfxr.dylib缺失错误求助
解决M1 Mac上.NET 5项目运行时找不到
libhostfxr.dylib的问题 你遇到的这个错误本质是架构不兼容:你的Apple Silicon M1是arm64架构,当前安装的是.NET 6的arm64版本,但你的项目目标是.NET 5的x64架构,系统找不到对应x64的.NET 5运行时文件。以下是几个可行的解决方案:
方案1:安装x64架构的.NET 5运行时
因为你的项目明确针对net5.0 x64,最直接的方法是补充安装x64版本的.NET 5运行时:
- 先在终端运行
dotnet --info确认已安装的runtime,你会发现只有arm64的.NET 6 - 安装x64版本的.NET 5 runtime后,再执行
dotnet run Corp.App.Mvc.csproj就能正常启动了
方案2:调整项目适配arm64架构(推荐,利用M1性能)
如果项目没有强制依赖x64的组件,可以修改项目配置适配M1的arm64架构,同时利用.NET 6的向下兼容性运行.NET 5项目:
- 打开
Corp.App.Mvc.csproj文件,添加或修改节点:<RuntimeIdentifier>osx-arm64</RuntimeIdentifier> - 或者直接在运行时指定RID:
dotnet run --runtime osx-arm64 Corp.App.Mvc.csproj - 重新构建项目
dotnet build后,运行就会调用arm64的.NET 6 runtime,完美适配你的M1芯片
方案3:临时指定x64 runtime路径(如果已安装但未识别)
如果你已经安装了x64的.NET runtime但系统没自动识别,可以通过环境变量临时指定:
export DOTNET_ROOT=/usr/local/share/dotnet/x64 dotnet run Corp.App.Mvc.csproj
补充说明:你提到项目能正常构建是因为构建过程仅依赖SDK,不需要运行时;只有启动应用时才需要匹配架构的运行时文件,所以才会出现构建成功但运行失败的情况。
内容的提问来源于stack exchange,提问作者Luke Puplett




