You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

已安装.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

火山引擎 最新活动