gpt4 book ai didi

c# - 带通配符的程序化 MSBuild 递归复制

转载 作者:太空狗 更新时间:2023-10-30 00:03:31 29 4
gpt4 key购买 nike

我正在创建一个 MSBuild v4 任务,该任务恰好需要调用复制任务以递归地复制一些文件(无需在目标位置展平目录结构)。

我想出了:

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();

但出现错误“无法将 C:\source\**\*.foo 复制到 c:\dest\* - 路径中的非法字符”

pragmatic invocation的在线帮助好像不多,画了个空白。有什么想法吗?

谢谢

乔恩

最佳答案

看起来 Copy 任务对递归没有内在的理解;以下代码将导致每个文件级别调用一次复制任务,这由 MSBuild 运行器处理。

<ItemGroup>
<x Include="c:\source\**\*.foo" />
</ItemGroup>
<Copy SourceFiles="@(x)" DestinationFolder="c:\dest\%(RecursiveDir)" />

但是,由于 Copy 任务似乎将 SourceFiles 和 DestinationFiles 视为一个关联数组(每个都是 ITaskItem[] 类型),我们只是执行了递归下降并在执行之前手动构建了这两个数组

关于c# - 带通配符的程序化 MSBuild 递归复制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8309320/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com