J'ai un simple convertisseur Word en PDF comme tâche MSBuild. La tâche prend les fichiers Word (ITaskItems) en entrée et les fichiers PDF (ITaskItems) en sortie. Le script utilise une cible de transformation pour la conversion:MSBUILD Tâche Éléments dans les sous-répertoires: les constructions incrémentielles ne sont-elles pas possibles sur ces sous-répertoires?
<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>
Ce qui se passe est que SubDir \ Two.doc est converti sur chaque génération incrémentielle, One.doc ne pas (c.-à-MSBuild saute correctement ce fichier parce qu'il était déjà converti) . Si j'utilise la spécification des éléments récursifs (la troisième ci-dessus), j'ai le même comportement (ie One.doc n'est converti que si le PDF est obsolète ou manquant, mais tous les documents des sous-répertoires sont toujours convertis).
Qu'est-ce que je fais mal ici?