是否可以基于Msbuild中的另一个目标结果执行目标?

是否可以基于Msbuild中的另一个目标结果执行目标?,msbuild,clearcase,msbuild-4.0,Msbuild,Clearcase,Msbuild 4.0,我有一项任务,要找出clearcase文件夹是否有任何更改 <Target Name="CheckChanges" Returns="ItemsFromFile"> <Exec Command="cleartool find &quot;$(FolderPath)&quot; -version &quot;{brtype($(StreamName)) &amp;&amp; created_since($(FromDate))}&

我有一项任务,要找出clearcase文件夹是否有任何更改

<Target Name="CheckChanges" Returns="ItemsFromFile">

    <Exec Command="cleartool find &quot;$(FolderPath)&quot; -version &quot;{brtype($(StreamName)) &amp;&amp; created_since($(FromDate))}&quot; -print >> Changes.log" />

    <ReadLinesFromFile
             File="Changes.log" >
      <Output
          TaskParameter="Lines"
          ItemName="ItemsFromFile"/>
    </ReadLinesFromFile>


  </Target>

<Target Name="Build"> 

<!-- This target should be executed only when Changes.log file has contents -->

<Target>

如果$(FolderPath)有更改,则内容将在changes.log中可用

我想做的是,如果changes.log文件包含一些行,那么运行另一个任务构建应该运行

如何基于文件包含内容的条件执行目标

我想做的是,如果
changes.log
文件包含一些行,那么运行另一个任务构建应该运行

问题是您正在使用“
>
”重定向
cleartool查找的结果

第一次执行作业将初始化
Changes.log
文件,您可以设置另一个作业,以测试该文件是否存在(请参阅),该文件大小为非零,以便运行。(有点像“”)

但是第二次执行只需添加行(如果有更改),或者保持
changes.log
文件不变。
这意味着“
Changes.log
”仍将“包含内容”,即使
cleartool find
未找到任何更改

使用“
>
”而不是“
>
”可以解决这个问题,因为如果
cleartool find
没有检测到任何更改,它将生成一个空的
Changes.log
文件,或者如果检测到更改,则生成一个非空文件