3

在我的 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)。有没有办法在不必创建新列表的情况下做到这一点?

4

2 回答 2

2

如果要保留目录结构,请使用:

<Copy SourceFiles="@(None)" DestinationFolder="$(NewDirectory)\%(None.RelativeDir)" />
于 2012-08-02T09:45:48.670 回答
1

我刚刚解决了这个问题!将 %(Recursive) 替换为 %(RelativeDir),即:

<Copy SourceFiles="@(None)" DestinationFiles="@(None->'$(NewDirectory)%(RelativeDir)%(Filename)%(Extension)')" ContinueOnError="false" />
于 2012-08-02T12:15:57.280 回答