我有一个简单的Word到PDF转换器作为MSBuild任务。该任务将Word文件(ITaskItems)作为输入,并将Pdf文件(ITaskItems)作为输出。该脚本使用对象的变换转换:子目录中的MSBUILD任务项目:这些增量构建是不可能的?
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="3.5">
<UsingTask AssemblyFile="$(MSBuildExtensionsPath)\MyTasks.dll" TaskName="MyTasks.DocToPdf" />
<Target Name="Build" DependsOnTargets="Convert" />
<Target Name="Convert"
Inputs="@(WordDocuments)"
Outputs="@(WordDocuments->'%(FileName).pdf')">
<DocToPdf Inputs="@(WordDocuments)"
Outputs="%(FileName).pdf">
<Output TaskParameter="ConvertedFiles" ItemName="PdfDocuments" />
</DocToPdf>
</Target>
<ItemGroup>
<WordDocuments Include="One.doc" />
<WordDocuments Include="SubDir\Two.doc" />
<WordDocuments Include="**\*.doc" />
</ItemGroup>
</Project>
发生了什么事是子目录\ Two.doc被转换在每个增量生成,One.doc不(即正确的MSBuild跳过该文件,因为它已经被转换) 。如果我使用递归项规范(上面的第三个),我会得到相同的行为(即,如果PDF已过期或丢失,One.doc只能被转换,但子目录中的所有文档始终都会被转换)。
我在这里做错了什么?