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

Mac M1上通过nektos/act运行microsoft/setup-msbuild@v1.1失败求助

解决Mac M1上用nektos/act运行GitHub Actions时msbuild配置失败的问题

问题根源

你碰到的MSBuild.exe only works for Windows错误,本质是nektos/act默认没有正确模拟Windows运行器环境,加上Workflow里的环境变量配置错误,导致microsoft/setup-msbuild无法识别有效Windows环境。Mac M1是ARM64架构,需要额外配置才能让act正确加载Windows容器并运行msbuild。

具体解决方案

1. 修正Workflow中的错误配置

  • 删掉手动设置的RUNNER_OS: x64环境变量:RUNNER_OS是系统自动设置的环境标识(值应为Windows/Linux/macOS),你设置的x64是架构参数,会干扰act对运行环境的判断。
  • 升级Action版本到最新:旧版本Action存在兼容性问题,比如将actions/checkout@v2升级到v4,microsoft/setup-msbuild@v1.1升级到v2。
  • 调整Visual Studio版本:指定兼容.NET 4.8.1的较新版本17.x,避免使用过于老旧的[15.1]版本。

修正后的Workflow代码:

on:
  workflow_dispatch

jobs:
  BuildOnWindows:
    runs-on: windows-latest
    steps:
      - name: Checkout code
        uses: actions/checkout@v4

      - name: Setup .NET Core SDK
        uses: actions/setup-dotnet@v4
        with:
          dotnet-version: '6.0.x'

      - name: Add msbuild to PATH
        uses: microsoft/setup-msbuild@v2
        with:
          vs-version: '17.x'

2. 正确配置act的运行参数

Mac M1是ARM64架构,原生Windows容器支持有限,需要通过Rosetta 2转译x86_64的Windows镜像。运行act时执行以下命令:

act -j BuildOnWindows --container-architecture amd64 --image ghcr.io/catthehacker/windows:act-latest
  • --container-architecture amd64:强制使用x86_64架构,让Rosetta 2处理转译适配
  • --image ghcr.io/catthehacker/windows:act-latest:使用专门适配act的Windows容器镜像,包含完整的Visual Studio构建工具

3. 备选方案:用dotnet build替代msbuild(若项目支持)

如果你的.NET Framework 4.8.1项目已迁移到Microsoft.NET.Sdk.WindowsDesktop SDK,可以直接用dotnet build命令构建,无需依赖msbuild.exe,在act中运行会更稳定。示例步骤:

- name: Build .NET Framework project
  run: dotnet build YourSolution.sln --configuration Release

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 07:14:50