如何使用MSBuild将文件复制到另一个目录?

时间:2009-03-17 17:55:09

标签: visual-studio-2005 msbuild copy

我正在尝试将$(TargetDir)中的几个文件复制到另一个文件夹(例如C:\ BinCache),但无论出于何种原因,我都无法让MSBuild停止抱怨。

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

我在这里做错了什么?

编辑:解决方案是使用CreateItem任务。据推测,Visual Studio 2008消除了这种限制。谢谢斯科特!

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

2 个答案:

答案 0 :(得分:8)

SourceFiles需要是一个项目列表

你需要像

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

刚刚注意到你是在2005年,在这种情况下你需要使用CreateItem任务

答案 1 :(得分:0)

只需使用常规的构建前或构建后事件。 VS支持开箱即用。

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