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

如何在Apple M1芯片设备上正常运行Azure Function PowerShell

Apple M1 芯片设备运行 Azure Function PowerShell 可行方案

本地运行修复方案

旧版Azure Function Core Tools和PowerShell Worker仅打包了x64架构的macOS原生依赖,在arm64架构的M1设备上无法正确加载,按以下步骤操作:

  • 卸载设备上已安装的x64版本.NET Core 3.1 SDK、旧版Azure Function Core Tools,清理残留的func命令软链接
  • 确认终端运行在原生arm64模式下,不要勾选终端程序的“使用Rosetta打开”选项,避免后续安装x64版本的依赖包
  • 安装arm64原生版本的.NET 6 SDK(Azure Function V4已正式支持.NET 6,无需依赖.NET Core 3.1)
  • 执行brew install azure-functions-core-tools@4安装arm64架构的最新版Core Tools,安装完成后执行func --version确认版本号≥4.0.5000
  • 创建或打开现有PowerShell类型Function项目时,选择PowerShell 7.2及以上版本的工作进程,不要选择7.0及以下的旧版运行时
  • 如果执行func start仍提示找不到runtime.osx-x64.runtime.native.System.IO.Ports程序集,在项目根目录新建Directory.Build.props文件,写入以下配置强制指定运行时架构为arm64:
<Project>
  <ItemGroup>
    <RuntimeHostConfigurationOption Include="System.Runtime.InteropServices.RuntimeInformation.OSArchitecture" Value="arm64" />
  </ItemGroup>
</Project>

配置完成后重新执行func start即可正常启动。

Docker部署修复方案

原报错System.IO.IOException: Function not implemented是因为旧版Azure Function PowerShell镜像仅提供x64架构版本,通过QEMU转译运行时不支持FileSystemWatcher依赖的系统调用,按以下步骤操作:

  • 替换基础镜像为支持原生arm64架构的版本:mcr.microsoft.com/azure-functions/powershell:4.24-powershell7.4,不要使用4-powershell7.2这类无明确架构支持的滚动tag
  • 构建、启动镜像时不需要添加--platform linux/amd64参数,Docker会自动拉取匹配arm64架构的镜像层,无转译损耗
  • 若因业务限制必须使用旧版x64镜像,在Dockerfile中添加以下环境变量关闭运行时文件监控功能,绕开不兼容的系统调用:
ENV AzureFunctionsJobHost__FileWatchingEnabled=false
ENV WEBSITE_ENABLE_SYNC_UPDATE_SITE=false

启动容器时直接执行func start --no-build即可,不需要额外添加转译参数。

验证方式

  • 本地启动后访问http://localhost:7071/api/<你的HTTP触发器路由>,返回预期响应即为运行成功
  • Docker部署时映射服务端口到本地,访问对应端口下的触发器路由验证服务状态

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 13:06:24