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

GitHub Actions构建VC++项目失败:Microsoft.Cpp.Default.props缺失及子文件夹未克隆问题求助

解决GitHub Actions中VC++项目构建失败(MSB4019)的问题

从你贴的错误日志来看,核心问题其实出在两个地方:你的解决方案包含VC++项目(.vcxproj),但GitHub Actions的windows-2022 runner默认没装必要的C构建工具;而且你用了dotnet build命令,这个命令本来是针对.NET项目设计的,没法正确处理VC项目的依赖和构建流程。另外你怀疑子模块没克隆,咱们也可以一起验证确认。

下面是具体的修复步骤:

1. 安装Visual Studio C++构建工具

GitHub Actions的Windows runner默认只带了基础环境,没有预装VC构建组件。你需要在工作流里添加步骤来配置MSBuild环境,推荐用官方的microsoft/setup-msbuild action,它会自动找到并配置系统中的MSBuild,同时确保C相关的构建依赖可用:

- name: Setup MSBuild Environment
  uses: microsoft/setup-msbuild@v1.1

2. 替换dotnet build为MSBuild命令

dotnet build无法识别VC++项目的配置,你需要改用MSBuild来构建整个解决方案,同时指定好构建配置和平台:

- name: Build Entire Solution
  run: msbuild ${{ env.SOLUTION_FILE_PATH }} /p:Configuration=${{ env.BUILD_CONFIGURATION }} /p:Platform=x64

提示:如果你的项目是x86架构,把Platform=x64改成Platform=x86就行,根据实际项目调整。

3. 验证子模块是否正确克隆

从错误日志里的路径(比如D:\a\genshin-cheat\genshin-cheat\cheat-base\cheat-base.vcxproj)来看,子模块其实已经被克隆了,但如果你还是想确认,可以在checkout步骤后加个验证命令:

- name: Verify Submodule Files
  run: |
    dir ${{ env.SOLUTION_FILE_PATH }}/../cheat-base
    dir ${{ env.SOLUTION_FILE_PATH }}/../cheat-library
    dir ${{ env.SOLUTION_FILE_PATH }}/../injector

这个命令会列出三个子文件夹的内容,直观确认文件是否存在。

4. 完整修复后的工作流

把以上步骤整合后,你的工作流应该是这样的:

push:
  branches: [ master ]
pull_request:
  branches: [ master ]
env:
  SOLUTION_FILE_PATH: ./genshincheat.sln
  BUILD_CONFIGURATION: Release
permissions:
  contents: read
jobs:
  build:
    runs-on: windows-2022
    steps:
      - uses: actions/checkout@v2
        with:
          submodules: true
      # 可选:验证子模块文件
      - name: Verify Submodule Files
        run: |
          dir ${{ env.SOLUTION_FILE_PATH }}/../cheat-base
          dir ${{ env.SOLUTION_FILE_PATH }}/../cheat-library
          dir ${{ env.SOLUTION_FILE_PATH }}/../injector
      # 配置MSBuild环境
      - name: Setup MSBuild Environment
        uses: microsoft/setup-msbuild@v1.1
      # 用MSBuild构建解决方案
      - name: Build Entire Solution
        run: msbuild ${{ env.SOLUTION_FILE_PATH }} /p:Configuration=${{ env.BUILD_CONFIGURATION }} /p:Platform=x64
      # 如果有.NET项目的测试,保留这一步;如果全是VC++项目可以移除
      - name: Run .NET Tests
        run: dotnet test

额外补充

  • 你遇到的MSB4019错误,本质是因为没装VC构建工具,导致MSBuild找不到C项目的默认属性文件,安装工具后这个问题会直接解决。
  • NU1503警告是因为dotnet restore试图处理VC项目,但VC项目本身不需要NuGet restore(除非你手动配置了),改用MSBuild后这个警告就会消失,因为MSBuild会自动处理VC++项目的依赖。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 19:17:38