Msbuild 如何将PDB从其他include目录复制到lib输出目录?

Msbuild 如何将PDB从其他include目录复制到lib输出目录?,msbuild,Msbuild,我有一个复杂的解决方案,有许多项目和许多用户添加新项目。按照我们设置第三方库的方式,我们需要复制3p库的.pdb文件,使其位于包装它的库旁边。例如,如果我们使用LibFoo,我们将有一个名为OurLibFoo的项目,该项目将包装LibFoo,对其进行抽象,并针对其设置依赖关系。因为VisualStudio将只查找带有最终可执行文件或它自己构建的库的.pdb文件,所以它将只查找LibFoo.pdb的OurLibFoo路径。因此,我们有一个自定义的构建步骤,它使用xcopy将LibFoo.pdb复制

我有一个复杂的解决方案,有许多项目和许多用户添加新项目。按照我们设置第三方库的方式,我们需要复制3p库的.pdb文件,使其位于包装它的库旁边。例如,如果我们使用LibFoo,我们将有一个名为OurLibFoo的项目,该项目将包装LibFoo,对其进行抽象,并针对其设置依赖关系。因为VisualStudio将只查找带有最终可执行文件或它自己构建的库的.pdb文件,所以它将只查找LibFoo.pdb的OurLibFoo路径。因此,我们有一个自定义的构建步骤,它使用xcopy将LibFoo.pdb复制到我们LibFoo的路径。我试图通过设置一个自定义目标来简化和自动化这个过程,该目标将读取AdditionalLibraryDirectory并将每个目录中的所有pdb文件复制到$(OutDir)。我似乎无法让它正常工作,毫无疑问,因为我基本上误解了msbuild变量的结构。以下是一些不起作用的代码:

<Target Name="CopyPdbs" AfterTargets="BeforeLib" DependsOnTargets="Lib" BeforeTargets="AfterLib">
    <ItemGroup>
      <Lib Include="@(ClCompile)"/>
    </ItemGroup>
    <ItemGroup>
      <Pdb Include="%(Lib.AdditionalLibraryDirectories)"/>
    </ItemGroup>
    <ItemGroup>
      <PdbNames Include="@(Pdb->'%(rootdir)%(directory)*.pdb')"/>
    </ItemGroup>
    <ItemGroup>
      <PdbNamesExplicit Include="@(PdbNames)"/>
    </ItemGroup>
    <Message Text="Copying files for falcon... @(PdbNamesExplicit)" Importance="high" />
    <Copy SourceFiles="@(PdbNamesExplicit)" DestinationFolder="$(OutDir)" ContinueOnError="false" />        
  </Target>

这会失败,因为复制将不接受带有通配符的路径,并且PdbNames中的通配符永远不会扩展。(它可能也会因为其他原因而失败,但我还没走那么远。)

我怎样才能更简洁,更重要的是,正确地完成这项工作

谢谢