我无法使用以下代码复制子文件夹和文件:
<ItemGroup>
<Compile Include="C:\Test\Folder1\text.txt"/>
<Compile Include="C:\Test\text1.txt"/>
</ItemGroup>
<Copy SourceFiles="@(Compile)" DestinationFiles="@(Compile->'C:\Destination\%(RecursiveDir)%(Filename)%(Extension)')" />
我收到此错误:无法找到路径的一部分。
如何使用msbuild将C:\ Test \ files和子文件夹复制到C:\ Destination \?
提前感谢您的帮助。
答案 0 :(得分:3)
为了填充RecursiveDir metadata,您必须在项目的路径中指定递归通配符(双星号)。 **
通配符将标记应该应用RecursiveDir的相对点。在您的示例中,听起来您希望在**
之后添加C:\Test
通配符,因此您的代码需要如下所示:
<ItemGroup>
<Compile Include="C:\Test\**\Folder1\text.txt"/>
<Compile Include="C:\Test\**\text1.txt"/>
</ItemGroup>
<Copy SourceFiles="@(Compile)" DestinationFiles="@(Compile->'C:\Destination\%(RecursiveDir)%(Filename)%(Extension)')" />
如上所示添加通配符会将文件复制到以下位置:
C:\Destination\text1.txt
C:\Destination\Folder1\text.txt
答案 1 :(得分:1)
与上面的回复相同,但没有额外的列表转换:
<ItemGroup>
<Compile Include="C:\Test\**\Folder1\text.txt"/>
<Compile Include="C:\Test\**\text1.txt"/>
</ItemGroup>
<Copy SourceFiles="@(Compile)" DestinationFolder="C:\Destination\%(RecursiveDir)" />