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

Visual Studio MSBuild错误MSB8066:自定义编译返回-1问题排查

问题描述

我有一个Visual Studio 2022解决方案,包含两个项目:

  • 项目A:负责生成cpp和hpp文件,生成程序运行正常,仅返回退出值0
  • 项目B:需要编译项目A生成的文件,因此将生成的cpp文件设置为Custom Build目标,hpp文件设置为「Excluded From Build」(仅添加到解决方案方便查看)

项目A已设置为优先构建,文件也能正确生成,但项目B编译时出现以下错误:

C:\Program Files\Microsoft Visual Studio\2022\Community\MSBuild\Microsoft\VC\v170\Microsoft.CppCommon.targets(254,5): error MSB8066: Custom build for '..\sources\ASM\generated\ASM_x64.cpp' exited with code -1.

有时还会伴随警告:

C:\Program Files\Microsoft Visual Studio\2022\Community\MSBuild\Microsoft\VC\v170\Microsoft.CppCommon.targets(254,5): warning MSB8017: A circular dependency has been detected while executing custom build commands for item "..\sources\ASM\generated\ASM_x64.cpp". This may cause incremental build to work incorrectly.

补充信息:如果生成的文件已存在且为最新状态(输入文件和代码生成器未修改),第二次编译解决方案时可成功通过。

cpp文件的Custom Build设置截图如下:
自定义编译设置截图

请问我遗漏了什么配置?


解决方案

从错误和警告来看,核心问题是Custom Build目标的依赖配置缺失,导致MSBuild无法正确判断生成文件的更新时机,甚至触发循环依赖。以下是具体修复步骤:

1. 补全Custom Build的「输入」和「输出」依赖

当前Custom Build仅指定了命令行,但MSBuild需要明确知道:

  • 哪些输入文件(如代码生成器程序、生成所需的模板/源文件)变更时,必须重新执行生成操作
  • 生成的最终输出文件路径(即你的ASM_x64.cpp和对应hpp文件)

操作步骤:

  • 右键项目B中的ASM_x64.cpp → 属性 → 自定义生成工具 → 常规
  • 在「输入」栏添加所有触发生成的依赖项:例如项目A的输出程序路径、生成依赖的.asm模板文件、配置文件等
  • 在「输出」栏填写生成的ASM_x64.cpp和ASM_x64.hpp的完整绝对路径(或相对于项目目录的路径)

这是解决错误的核心:MSBuild通过输入输出的时间戳验证构建有效性,缺失这些配置会导致MSBuild无法确认文件是否已正确生成,进而抛出错误码-1。

2. 消除循环依赖

警告中的循环依赖,通常是因为以下两种情况:

  • 「输入」栏错误包含了ASM_x64.cpp本身
  • 项目依赖配置不当,导致项目B的构建逻辑和生成操作形成闭环

修复方式:

  • 检查「输入」栏,确保没有包含生成的cpp文件
  • 确认项目依赖设置:右键解决方案 → 项目依赖 → 勾选项目B依赖项目A,确保项目A优先完成构建

3. 验证增量构建逻辑

完成配置后,执行以下操作验证:

  1. 清理解决方案(Build → Clean Solution)
  2. 首次构建:项目A先运行生成文件,项目B正常编译生成的cpp
  3. 二次构建:由于输入文件未修改,MSBuild会跳过Custom Build步骤,直接完成编译(与你补充的正常场景一致)

额外排查点

如果问题仍存在,检查Custom Build的工作目录:

  • 确保代码生成器的工作目录与输出目录一致,或在命令行中使用绝对路径指定输出位置,避免生成文件的实际路径与MSBuild预期路径不匹配

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 15:15:56