visual-studio-2010 - 通过 MSBuild 从 None ItemGroup 复制项目时保留目录结构

标签 visual-studio-2010 msbuild itemgroup

在我的 cpp 项目文件中,我定义了一个项目组:

<ItemGroup>
    <None Include="dir1\file1" />
    <None Include="dir1\blah.dll" />
    <None Include="dir1\dir2\something.dll" />
    <None Include="dir1\dir2\dir3\another_file.dll" />
</ItemGroup>

我有一个 AfterBuild 目标,我想将上述文件(并保留它们的目录结构)复制到一个新位置,例如:

<Target Name="AfterBuild">
    <Copy SourceFiles="@(None)" DestinationFiles="@(None->'$(NewDirectory)%(RecursiveDir)%(Filename)%(Extension)')" ContinueOnError="false" />
</Target>

注意:$(NewDirectory) 在别处定义。

然而,上面只是将文件复制到 $(NewDirectory) 而忽略了项目列表的目录结构(即 Dir1、Dir2 和 Dir3)。有没有一种无需创建新列表即可执行此操作的方法?

最佳答案

如果你想保留目录结构使用这个:

<Copy SourceFiles="@(None)" DestinationFolder="$(NewDirectory)\%(None.RelativeDir)" />

关于visual-studio-2010 - 通过 MSBuild 从 None ItemGroup 复制项目时保留目录结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11769516/

相关文章:

c# - 为什么这段代码不能在 .NET 4.0 的 VS2010 中编译?

C++ 将值添加到堆栈下标需要数组或指针类型和警告

visual-studio-2010 - Webdeploy 的 MsDeploy 失败

msbuild - 如何在不执行构建的情况下检索@(TargetOutputs)

c++ - C 虚拟键盘输入有选择地工作

tfs - Msbuild CoreCompile 依赖于目标

svn - 使用MSBuild更新版本信息(二进制编译后)

msbuild - 旧项目格式忽略 PackageReference 条件

msbuild - MsBuild:通过CallTarget传递ItemGroup

powershell - 使用经过转换的 web.config 发布后更新 Azure CSPKG