2009-03-17 23 views
5

Estoy tratando de copiar varios archivos en $ (TargetDir) a otra carpeta (por ejemplo, C: \ BinCache), pero por alguna razón no puedo hacer que MSBuild deje de quejarse.¿Cómo copio archivos en otro directorio usando MSBuild?

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

¿Qué estoy haciendo mal aquí?

EDITAR: La solución es utilizar una tarea CreateItem. Presumiblemente, Visual Studio 2008 elimina esta restricción. Gracias Scott!

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

Respuesta

8

sourcefiles tiene que ser una lista de artículos

que necesita algo así como

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

di cuenta de que estás en el 2005, en ese caso tendrá que utilizar el CreateItem tarea

+0

Visual Studio informa del error, "El elemento debajo del elemento no se reconoce". ¿Algunas ideas? – Dave

+0

Ok, al investigar esto vi la tarea CreateItem mencionada, volveré a mirar. – Dave

0

Solo use un evento regular previo o posterior a la construcción. VS lo admite de fábrica.

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

Gracias, pero tengo que hacer esto usando MSBuild. – Dave

Cuestiones relacionadas