You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

M1芯片Mac上VS Code编译Azure静态Web应用C# API报错求助

M1 Mac上Azure Function编译架构不兼容问题排查线索

在M1芯片的MacBook上通过VS Code创建Azure静态Web应用,前端基于React.js,后端API使用C# Azure Function。编译Azure Function时出现以下错误:

Metadata generation failed. Exit code: '130' Error: 'Failed to load /usr/local/share/dotnet/shared/Microsoft.NETCore.App/3.1.30/libhostpolicy.dylib, error: dlopen(/usr/local/share/dotnet/shared/Microsoft.NETCore.App/3.1.30/libhostpolicy.dylib, 0x0001): tried: '/usr/local/share/dotnet/shared/Microsoft.NETCore.App/3.1.30/libhostpolicy.dylib' (mach-o file, but is an incompatible architecture (have (x86_64), need (arm64e)))An error occurred while loading required library libhostpolicy.dylib from [/usr/local/share/dotnet/shared/Microsoft.NETCore.App/3.1.30]'

已安装的.NET SDK和Runtime列表:

dotnet --list-sdks
6.0.300 [/usr/local/share/dotnet/sdk]
6.0.301 [/usr/local/share/dotnet/sdk]
6.0.302 [/usr/local/share/dotnet/sdk]
6.0.400 [/usr/local/share/dotnet/sdk]
6.0.401 [/usr/local/share/dotnet/sdk]
6.0.402 [/usr/local/share/dotnet/sdk]
dotnet --list-runtimes
Microsoft.AspNetCore.App 6.0.5 [/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App]
Microsoft.AspNetCore.App 6.0.6 [/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App]
Microsoft.AspNetCore.App 6.0.7 [/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App]
Microsoft.AspNetCore.App 6.0.8 [/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App]
Microsoft.AspNetCore.App 6.0.9 [/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App]
Microsoft.AspNetCore.App 6.0.10 [/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App]
Microsoft.NETCore.App 3.1.25 [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]
Microsoft.NETCore.App 3.1.26 [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]
Microsoft.NETCore.App 3.1.27 [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]
Microsoft.NETCore.App 3.1.28 [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]
Microsoft.NETCore.App 3.1.29 [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]
Microsoft.NETCore.App 3.1.30 [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]
Microsoft.NETCore.App 6.0.5 [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]
Microsoft.NETCore.App 6.0.6 [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]
Microsoft.NETCore.App 6.0.7 [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]
Microsoft.NETCore.App 6.0.8 [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]
Microsoft.NETCore.App 6.0.9 [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]
Microsoft.NETCore.App 6.0.10 [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]

排查线索

  • 检查项目目标框架:
    错误指向.NET Core 3.1运行时,确认项目是否误配置为依赖3.1版本,或项目文件(.csproj)中TargetFramework是否正确设置为net6.0(搭配Azure Functions v4)。

  • 验证.NET 3.1运行时架构:
    执行命令file /usr/local/share/dotnet/shared/Microsoft.NETCore.App/3.1.30/libhostpolicy.dylib,查看输出是否为x86_64。M1 Mac上.NET 3.1仅支持x86_64架构,需通过Rosetta兼容运行。

  • 强制指定编译架构:
    在Azure Function的.csproj文件中添加架构配置:
    若使用.NET 6,添加:

    <PropertyGroup>
      <TargetFramework>net6.0</TargetFramework>
      <AzureFunctionsVersion>v4</AzureFunctionsVersion>
      <RuntimeIdentifier>osx-arm64</RuntimeIdentifier>
    </PropertyGroup>
    

    若坚持用.NET 3.1,添加:

    <PropertyGroup>
      <TargetFramework>netcoreapp3.1</TargetFramework>
      <AzureFunctionsVersion>v3</AzureFunctionsVersion>
      <RuntimeIdentifier>osx-x64</RuntimeIdentifier>
    </PropertyGroup>
    
  • 检查VS Code运行架构:
    打开VS Code→左下角设置图标→关于,查看架构字段。若为arm64,右键VS Code图标→显示简介→勾选“使用Rosetta打开”,重启后再编译。

  • 清理项目缓存:
    执行dotnet clean,手动删除项目的bin和obj文件夹,再重新执行dotnet build。

  • 确认Azure Functions Core Tools架构:
    执行func --version,若为x86_64版本,需通过Rosetta启动终端/VS Code运行;若使用.NET 6,可重新安装arm64版本的Core Tools。

内容的提问来源于stack exchange,提问作者Victor

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 05:10:40