我正在创建一个MSBuild v4任务,恰好需要调用Copy任务来递归复制一些文件(不会在目的地展平目录结构).
我想出了:
var copy = new Microsoft.Build.Tasks.Copy
{
BuildEngine = this.BuildEngine,
SourceFiles = new ITaskItem[] { new TaskItem(@"C:\source\**\*.foo") },
DestinationFolder = new TaskItem(@"c:\dest\\")
};
copy.Execute();
Run Code Online (Sandbox Code Playgroud)
但是收到错误'无法将C:\ source\**\*.foo复制到c:\ dest\* - 路径中的非法字符'
对于务实的调用似乎没有太多的在线帮助,并且已经画了一个空白.有任何想法吗?
谢谢
乔恩
Jon*_*tes 12
看起来Copy任务对递归没有内在的理解; 以下代码将导致每个文件级别调用一次Copy任务,这由MSBuild运行器处理.
<ItemGroup>
<x Include="c:\source\**\*.foo" />
</ItemGroup>
<Copy SourceFiles="@(x)" DestinationFolder="c:\dest\%(RecursiveDir)" />
Run Code Online (Sandbox Code Playgroud)
但是,由于Copy任务似乎将SourceFiles和DestinationFiles视为关联数组(每个类型ITaskItem []),我们只是执行递归下降并在执行之前手动构建这两个数组
| 归档时间: |
|
| 查看次数: |
3334 次 |
| 最近记录: |