如何在不引用实际二进制文件的情况下获得项目引用

时间:2018-02-07 14:31:46

标签: c# visual-studio msbuild asp.net-core-2.0 debug-symbols

以下工作正常,但它不会复制Asp.net Core 2.0项目的.pdb文件。

<ProjectReference Include="..\ProjectA\ProjectA.csproj">
    <Project>{b402782f-de0a-41fa-b364-60612a786fb2}</Project>
    <Name>ProjectA</Name>
    <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
    <OutputItemType>Content</OutputItemType>
    <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
    <Targets>Build;DebugSymbolsProjectOutputGroup</Targets>
</ProjectReference>

https://blogs.msdn.microsoft.com/kirillosenkov/2015/04/04/how-to-have-a-project-reference-without-referencing-the-actual-binary

那么,我们应该怎样做才能复制pdb文件?

1 个答案:

答案 0 :(得分:1)

  

那么,我们应该怎样做才能复制pdb文件?

正如Marc和that bolg指出此方法在Visual Studio中不起作用来复制.pdb文件。因为我们设置了<ReferenceOutputAssembly>false</ReferenceOutputAssembly>项目引用而没有引用实际的二进制文件,所以VS / MSBuild不会复制.pdb文件。

  

很多人都问过如何复制.pdb文件除了   .exe / .dll。事实证明有一个技巧,,但它不起作用   在VS建设。但是没关系,因为你真的不需要VS中的.pdb   无论如何,因为调试器将在其原始路径上找到.pdb   反正。

如果您仍想复制此.pdb文件,则可以对项目使用MSBuild copy taskbuild event

MSBuild复制任务:

要完成此操作,请卸载您的项目。然后在项目的最后,就在结束标记之前,放在脚本下面:

<Target Name="CopyPDBfile" AfterTargets="Build">
    <Copy SourceFiles="$(SolutionDir)ProjectA\bin\Debug\ProjectA.pdb" DestinationFolder="$(TargetDir)" />
</Target>

构建活动:

在Pre-build / Post-build事件中添加以下构建命令行:

xcopy /y "$(SolutionDir)ProjectA\bin\Debug\ProjectA.pdb" "$(TargetDir)"

注意:不要忽略构建命令行中的双引号和空格。

希望这有帮助。