是否可以基于Msbuild中的另一个目标结果执行目标?
我有一项任务,要找出clearcase文件夹是否有任何更改是否可以基于Msbuild中的另一个目标结果执行目标?,msbuild,clearcase,msbuild-4.0,Msbuild,Clearcase,Msbuild 4.0,我有一项任务,要找出clearcase文件夹是否有任何更改 <Target Name="CheckChanges" Returns="ItemsFromFile"> <Exec Command="cleartool find "$(FolderPath)" -version "{brtype($(StreamName)) && created_since($(FromDate))}&
<Target Name="CheckChanges" Returns="ItemsFromFile">
<Exec Command="cleartool find "$(FolderPath)" -version "{brtype($(StreamName)) && created_since($(FromDate))}" -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
文件,或者如果检测到更改,则生成一个非空文件