本文介绍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 具有机制,用于指定哪些目标在其他目标之前或之后运行,这包括使用 BeforeTargets
和 AfterTargets
属性。此外,DependsOnTargets
属性可指定某个目标依赖于另一个目标的输出,因此必须在该目标之后运行。 MSBuild 使用此信息来确定目标生成顺序。 请参阅 目标生成顺序。
当目标生成图中有循环依赖项时,会发生此错误。 有两种形式的错误,具体取决于 MSBuild 是否能够识别特定的依赖项问题。
如果在目标中运行 MSBuild 任务 ,这会创建内部生成,并且内部生成依赖于父项目的外部生成,则也可能会发生此错误。
决议
如果 MSBuild 错误列出了导致依赖项的目标。 如果这些是您拥有并可以修改的目标,请查看这些目标上的AfterTargets
、BeforeTargets
和DependsOnTargets
属性,并更改某些内容以避免循环依赖。 但是,必须以正确的方式更改目标。 请参阅 目标生成顺序 逻辑,了解 MSBuild 如何确定生成顺序,然后分析依赖项是否正确表达。
如果错误消息未指定循环依赖项中涉及的特定目标,请尝试启用详细诊断(在命令行上使用 -v:diag
开关),或者尝试使用二进制记录器并在 结构化日志查看器中查看它。
适用对象
MSBuild 的所有版本