Msbuild 如何将PDB从其他include目录复制到lib输出目录?
我有一个复杂的解决方案,有许多项目和许多用户添加新项目。按照我们设置第三方库的方式,我们需要复制3p库的.pdb文件,使其位于包装它的库旁边。例如,如果我们使用LibFoo,我们将有一个名为OurLibFoo的项目,该项目将包装LibFoo,对其进行抽象,并针对其设置依赖关系。因为VisualStudio将只查找带有最终可执行文件或它自己构建的库的.pdb文件,所以它将只查找LibFoo.pdb的OurLibFoo路径。因此,我们有一个自定义的构建步骤,它使用xcopy将LibFoo.pdb复制到我们LibFoo的路径。我试图通过设置一个自定义目标来简化和自动化这个过程,该目标将读取AdditionalLibraryDirectory并将每个目录中的所有pdb文件复制到$(OutDir)。我似乎无法让它正常工作,毫无疑问,因为我基本上误解了msbuild变量的结构。以下是一些不起作用的代码:Msbuild 如何将PDB从其他include目录复制到lib输出目录?,msbuild,Msbuild,我有一个复杂的解决方案,有许多项目和许多用户添加新项目。按照我们设置第三方库的方式,我们需要复制3p库的.pdb文件,使其位于包装它的库旁边。例如,如果我们使用LibFoo,我们将有一个名为OurLibFoo的项目,该项目将包装LibFoo,对其进行抽象,并针对其设置依赖关系。因为VisualStudio将只查找带有最终可执行文件或它自己构建的库的.pdb文件,所以它将只查找LibFoo.pdb的OurLibFoo路径。因此,我们有一个自定义的构建步骤,它使用xcopy将LibFoo.pdb复制
<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中的通配符永远不会扩展。(它可能也会因为其他原因而失败,但我还没走那么远。)
我怎样才能更简洁,更重要的是,正确地完成这项工作
谢谢