专栏首页林德熙的博客修复 VisualStudio 构建时没有将 NuGet 的 PDB 符号文件拷贝到输出文件夹

修复 VisualStudio 构建时没有将 NuGet 的 PDB 符号文件拷贝到输出文件夹

本文告诉大家如何修复 VisualStudio 构建时没有将 NuGet 的 PDB 符号文件拷贝到输出文件夹的问题。如果 VisualStudio 构建时没有将 NuGet 的 PDB 符号文件拷贝到输出文件夹,那将会在调试的时候,由于找不到 PDB 符号文件而加载符号失败

尽管这个坑从 2017 到现在,来来回回修了好多次,有某些时候能拷贝,有某些时候就只认 symbol 的 NuGet 包,有时候无论什么包都不认。本文将告诉大家如何强行设置拷贝 PDB 符号文件

方法是在自己的项目的 csproj 项目文件夹里面添加如下代码

<Target Name="IncludeSymbolFromReferences"
        AfterTargets="ResolveAssemblyReferences"
        Condition="@(ReferenceCopyLocalPaths) != ''">
  <ItemGroup>
    <ReferenceCopyLocalPaths
            Include="%(ReferenceCopyLocalPaths.RelativeDir)%(ReferenceCopyLocalPaths.Filename).pdb"
            DestinationSubDirectory="%(ReferenceCopyLocalPaths.DestinationSubDirectory)" />
    <ReferenceCopyLocalPaths Remove="@(ReferenceCopyLocalPaths)"
                             Condition="!Exists('%(FullPath)')" />
  </ItemGroup>
</Target>

以上代码表示在 ResolveAssemblyReferences 的时候,执行 IncludeSymbolFromReferences 任务,这个任务里面,将会尝试去找所有的引用的 pdb 文件,如果找到了,就放入到输出拷贝里面

如此即可在构建时,将引用的 NuGet 包的 DLL 对应 PDB 文件拷贝到输出文件夹,而不需要关注具体的框架版本

当然,在每个项目都拷贝以上的代码也不是好主意。以上的代码被 SimonCropp 大佬封装到了 https://github.com/SimonCropp/Cymbal 仓库里面,作为 NuGet 包发布,只需要通过 NuGet 管理器安装 Cymbal 即可

本文参与 腾讯云自媒体分享计划 ,欢迎热爱写作的你一起参与!
本文分享自作者个人站点/博客:https://blog.lindexi.com/复制
如有侵权,请联系 cloudcommunity@tencent.com 删除。
登录 后参与评论
0 条评论

相关文章

  • Roslyn 通过 EmbedAllSources 将源代码嵌入到 PDB 符号文件中方便开发者调试

    咱造了一个轮子,咱可以非常方便将这个轮子库作为 NuGet 发布出去,造福其他开发者,或者毒害其他开发者。为什么说是毒害呢?因为有时候这个库存在坑,此时使用这个...

    林德熙
  • VisualStudio 如何在 NuGet 包里面同时包含 DEBUG 和 RELEASE 的库

    我在开发的时候需要使用到一些 DEBUG 库进行调试,但是我的库是通过 NuGet 给用户的,如果在 NuGet 里面使用到了 DEBUG 的库那么会让代码的运...

    林德熙
  • Roslyn 让 VisualStudio 急速调试底层库方法

    我有一个很大的项目,这个项目里面包含了很多小的底层库。有一天我发现了某个底层库可能有小伙伴挖了一个坑,我期望调试这个底层库,但是我一点都不想编译整个大项目,因为...

    林德熙
  • VisualStudio 2019 调试项目使用 Portable PDB 提示不支持 PDB 格式

    在新的 .NET 上,将会默认使用 Portable PDB 符号格式,而如果 VisualStudio 配置了使用托管兼容模式,那么将在加载符号的时候,将会提...

    林德熙
  • 搭建一个自动化分析 DUMP 平台

    本文来告诉大家如何一步步搭建一个 DUMP 分析平台,核心是用来分析桌面端的应用软件,如 WPF 软件的 DUMP 文件。在开始之前需要说明的是,如果桌面端软件...

    林德熙
  • dotnet 使用 SourceLink 将 NuGet 链接源代码到 GitHub 等仓库

    在发布 CBB 作为 NuGet 包的时候,我期望开发者在使用我的库进行调试,可以自动链接代码到对应打包的 GitHub 上的代码,可以从本地拿到对应的源代码进...

    林德熙
  • CoreHook:基于.NET Core运行时实现的Windows HOOK库

    今天为大家介绍一款基于.NET Core运行时实现的Windows HOOK库,CoreHook。

    FB客服
  • 卷入.NET WEB

    作者:Longofo@知道创宇404实验室 时间:2022年05月11日 不久前拿到一个使用.NET目标的任务,有段时间exchange连续出了n次洞,一直想系...

    Seebug漏洞平台
  • 微软正式发布 Visual Studio 2022!香得一腿~

    前不久,微软正式发布了 Visual Studio 2022,Visual Studio 2022 的主要功能包括:

    程序IT圈
  • 微软正式发布 Visual Studio 2022

    前不久,微软正式发布了 Visual Studio 2022,Visual Studio 2022 的主要功能包括:

    GitHubDaily
  • dotnet 配置 Gitlab 的 Runner 做 CI 自动构建

    今天在少珺小伙伴的协助下,使用了 gitlab 的 runner 给全组的项目做自动的构建。为什么需要使用 Gitlab 的 Runner 做自动构建,原因是之...

    林德熙
  • .NET Core系列 : 2 、project.json 这葫芦里卖的什么药

    .NET Core系列 : 1、.NET Core 环境搭建和命令行CLI入门 介绍了.NET Core环境,本文介绍.NET Core中最重要的一个配置文件p...

    张善友
  • dotnet 用 NuGet 将自己的工具作为 dotnet tool 分发

    我写了一个有趣的工具,我如何将这个工具给到小伙伴予力众生呢?只需要设定这个工具是 dotnet tool 工具就可以通过 NuGet 分发出去啦。几乎所有的 d...

    林德熙
  • .NET Core 系列5 :使用 Nuget打包类库

    NuGet是个开源项目,项目包括 NuGet VS插件/NuGet Explorer/NuGetServer/NuGet命令行等项目,.NET Core项目完全...

    张善友
  • WPF 框架开发 调试和开发 XAML 构建过程的 PresentationBuildTasks 方法

    阅读本文,你可以了解如何编写开发和调试 XAML 构建为 Baml 和 g.cs 文件的过程和工具。本文也适合想要了解 WPF 的 XAML 构建过程的开发者阅...

    林德熙
  • 符号下载器 (dotnet-symbol)

    若要安装最新版 dotnet-symbol NuGet 包,请使用 dotnet tool install 命令:

    呆呆
  • Roslyn 如何基于 Microsoft.NET.Sdk 制作源代码包

    本文告诉大家如何做源代码包,源代码包的意思是安装的包不是安装dll的方式,而是使用源代码的方式。也就是最后是编译包的源代码而不是添加dll,这个方式是解决想要把...

    林德熙
  • 宇宙第一 IDE 叕发布新版了

    Visual Studio 2022 正式版于发布。新版本带有 go-live 许可证,可供生产使用。在 Visual Studio 2019 的基础上,新版集...

    Java技术精选

扫码关注腾讯云开发者

领取腾讯云代金券