【问题标题】:Preserve directory structure when copying items from the None ItemGroup via MSBuild通过 MSBuild 从 None ItemGroup 复制项目时保留目录结构
【发布时间】:2012-08-02 00:37:34
【问题描述】:

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

【问题讨论】:

    标签: visual-studio-2010 msbuild itemgroup


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多