0

从 NAnt 帮助页面(http://nant.sourceforge.net/release/latest/help/fundamentals/targets.html):

NAnt 尝试按照从左到右的顺序执行depends 属性中的目标。当一个较早的目标依赖于它时,一个目标可能会更早地执行:

<target name="A"/>
<target name="B" depends="A" />
<target name="C" depends="B" />
<target name="D" depends="C,B,A" /

假设我们要执行目标 D。从它的依赖属性来看,您可能认为首先执行目标 C,然后执行 B,然后执行 A。错误的!C依赖于B,B又依赖于A,所以首先执行A,然后执行B,然后执行C,最后执行D。

既然 C 依赖于 B 并且 B 依赖于 A,那么目标(D)的依赖属性不应该只是 C 吗?

如果我将 D 的依赖项单独替换为“C”,执行顺序是什么?它会改变以前的顺序吗?

4

1 回答 1

2

使用示例中指定的目标:

<target name="A" />
<target name="B" depends="A" />
<target name="C" depends="B" />
<target name="D" depends="C,B,A" />

如果执行D,则执行顺序为A, B, C, D。这是由于依赖链 - 依赖的目标必须在依赖它的目标之前执行。如果你用 just替换了depends属性,你是对的——执行顺序仍然是一样的。DC

然而,这个例子强调的是,依赖关系可能不会depends按照属性中指定的顺序执行。例如,如果您只有以下目标:

<target name="A" />
<target name="B" />
<target name="C" />
<target name="D" depends="C,B,A" />

并执行D,执行顺序现在将匹配depends属性的顺序 - 即C, B, A, D

于 2014-12-08T13:42:03.383 回答