MSBuild - comment copier des fichiers qui peuvent ou non exister?
J'ai une situation où j'ai besoin de copier quelques fichiers spécifiques dans un script MSBuild, mais ils peuvent ou non exister. S'ils n'existent pas, c'est bon, je n'en ai pas besoin. Mais la tâche standard <copy>
génère une erreur si elle ne peut pas trouver chaque élément de la liste...
24
demandé sur
Vilx-
2009-02-04 18:27:05
3 réponses
Utilisez la conditionExists sur la tâche de copie.
<CreateItem Include="*.xml">
<Output ItemName="ItemsThatNeedToBeCopied" TaskParameter="Include"/>
</CreateItem>
<Copy SourceFiles="@(ItemsThatNeedToBeCopied)"
DestinationFolder="$(OutputDir)"
Condition="Exists('%(RootDir)%(Directory)%(Filename)%(Extension)')"/>
41
répondu
Julien Hoarau
2009-02-04 15:38:50
Le plus simple serait d'utiliser L'indicateur ContinueOnError http://msdn.microsoft.com/en-us/library/7z253716.aspx
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<MySourceFiles Include="a.cs;b.cs;c.cs"/>
</ItemGroup>
<Target Name="CopyFiles">
<Copy
SourceFiles="@(MySourceFiles)"
DestinationFolder="c:\MyProject\Destination"
ContinueOnError="true"
/>
</Target>
</Project>
Mais si quelque chose d'autre ne va pas, vous ne le remarquerez pas. Donc, la condition existe de la réponse de madgnome serait meilleure.
6
répondu
KeesDijk
2009-02-04 15:50:29
Il semble que vous pouvez marquer MySourceFiles comme SkipUnchangedFiles= "true" et il ne copiera pas les fichiers s'ils existent déjà.
0
répondu
kevindaub
2009-08-25 16:53:42