5

我正在尝试将 $(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>
4

2 回答 2

8

SourceFiles 需要是一个项目列表

你需要类似的东西

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

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

于 2009-03-17T17:59:24.743 回答
0

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

xcopy "@(TargetDir)*.dll" "\yourdir" /i /f /s /v /y
于 2009-03-17T17:58:50.220 回答