MSB4006诊断代码

本文介绍MSB4006错误代码。

消息文本

MSB4006: There is a circular dependency in the target dependency graph involving target 'value'. MSB4006: There is a circular dependency in the target dependency graph involving target 'value'. Since 'value' has 'value' dependence on 'value', the circular is 'value'.

DESCRIPTION

MSBuild 具有机制,用于指定哪些目标在其他目标之前或之后运行,这包括使用 BeforeTargetsAfterTargets 属性。此外,DependsOnTargets 属性可指定某个目标依赖于另一个目标的输出,因此必须在该目标之后运行。 MSBuild 使用此信息来确定目标生成顺序。 请参阅 目标生成顺序

当目标生成图中有循环依赖项时,会发生此错误。 有两种形式的错误,具体取决于 MSBuild 是否能够识别特定的依赖项问题。

如果在目标中运行 MSBuild 任务 ,这会创建内部生成,并且内部生成依赖于父项目的外部生成,则也可能会发生此错误。

决议

如果 MSBuild 错误列出了导致依赖项的目标。 如果这些是您拥有并可以修改的目标,请查看这些目标上的AfterTargetsBeforeTargetsDependsOnTargets属性,并更改某些内容以避免循环依赖。 但是,必须以正确的方式更改目标。 请参阅 目标生成顺序 逻辑,了解 MSBuild 如何确定生成顺序,然后分析依赖项是否正确表达。

如果错误消息未指定循环依赖项中涉及的特定目标,请尝试启用详细诊断(在命令行上使用 -v:diag 开关),或者尝试使用二进制记录器并在 结构化日志查看器中查看它。

适用对象

MSBuild 的所有版本