2009-03-17 5 views
5

J'essaie de copier plusieurs fichiers dans le $ (TargetDir) vers un autre dossier (par exemple C: \ BinCache), mais pour une raison quelconque, je ne peux pas obtenir MSBuild pour cesser de se plaindre.Comment copier des fichiers dans un autre répertoire en utilisant MSBuild?

<Target Name="AfterBuild"> 
    <Copy SourceFiles="$(TargetDir)\*.*" 
      DestinationFolder="C:\BinCache" /> 
    </Target> 

Qu'est-ce que je fais mal ici?

EDIT: La solution consiste à utiliser une tâche CreateItem. Vraisemblablement, Visual Studio 2008 supprime cette restriction. Merci Scott!

<Target Name="AfterBuild"> 
    <CreateItem Include="$(TargetDir)\*.*"> 
    <Output TaskParameter="Include" ItemName="SourceFiles" /> 
    </CreateItem> 
    <Copy SourceFiles="@(SourceFiles)" DestinationFolder="C:\BinCache" /> 
</Target> 

Répondre

8

SourceFiles doit être une liste d'article

vous aurez besoin quelque chose comme

<Target Name="AfterBuild"> 
    <ItemGroup> 
    <SourceFiles Include="$(TargetDir)\*.*" /> 
    </ItemGroup> 
    <Copy SourceFiles="@(SourceFiles)" DestinationFolder="C:\BinCache" /> 
</Target> 

remarqué seulement vous êtes en 2005, dans ce cas, vous aurez besoin d'utiliser le CreateItem tâche

+0

Visual Studio signale l'erreur "L'élément sous l'élément n'est pas reconnu." Des idées? – Dave

+0

Ok, en cherchant cela, j'ai vu la tâche CreateItem mentionnée, je vais jeter un autre coup d'oeil. – Dave

0

Utilisez simplement un événement normal avant ou après la construction. VS soutient cela hors de la boîte.

xcopy "@(TargetDir)*.dll" "\yourdir" /i /f /s /v /y 
+0

Merci, mais je dois le faire en utilisant MSBuild. – Dave

Questions connexes