【问题标题】:Copy NuGet .pdb to output directory将 NuGet .pdb 复制到输出目录
【发布时间】:2023-03-03 19:48:01
【问题描述】:

当我构建一个 ASP.NET Core 项目时,它只将它自己的 .pdb 文件和任何已安装的 NuGet 包的所有 .dlls 复制到输出目录。但是,它不会复制他们的.pdb 文件。我必须从%UserProfile%\.nuget\packages 目录中手动选择它们。

我想知道是否有一个选项可以将 NuGet 包 .pdb 复制到输出目录?

【问题讨论】:

    标签: c# asp.net-core nuget pdb-files


    【解决方案1】:

    这样做的新方法越来越多地使用SourceLink,它允许在调试时按需下载源代码。

    注意:正如 Martin Ullrich 所指出的那样,在撰写本文时仍有 missing features

    NuGet 符号包和符号服务器

    传统上,NuGet .nupkg 文件中没有 .pdb 文件。

    相反,.pdb 文件被放入NuGet symbol packages (ending in .symbols.nupkg)

    然后它们可以托管在 symbol servers(或本地文件系统)上,而 configuring it accordingly 又可以由 Visual Studio IDE 使用它们。另见Specify symbol (.pdb) and source files in the Visual Studio debugger

    请注意,并非所有 NuGet 包发布者都创建符号包或使用 SourceLink - 如果您需要调试没有任何符号包的开源库,也许您应该考虑提供它们。

    【讨论】:

    • 实际上它们是我自己的包,其中包含 .pdb 文件,但 NuGet 符号包的替代方案(对我来说是新的)听起来很有趣,它看起来是使用 .pdb 的正确方法文件。
    • 我实际上想说的是,包含 pdb 文件越来越成为处理此问题的更好方法 - 使用 Source Link 将 PDB 链接到源代码本身。这消除了对符号服务器的依赖。
    • 这实际上是一个缺失的功能,应该在 2.1.300+ 中可用,请参阅跟踪问题github.com/dotnet/sdk/issues/1458
    • @nl-x:如果答案中的方法不适合你,我需要看看到底发生了什么。但请注意,对于 .NET Core,并非所有内容都需要位于 output 目录中 - 我希望它可能不存在,而是位于 publish 目录中。所以尝试运行dotnet publish 看看是否更好。
    • @nl-x:使用 SourceLink,我希望 PDB 已经在 NuPkg 文件中 - 例如在 nuget.org/packages/Google.Cloud.Speech.V1 的 NuPkg 文件中。如果包的发布者既没有使用符号服务器,也没有在包中包含 PDB 文件,那么这不是消费者可以真正解决的问题。但是如果 PDB 文件 is 已经在包中,我希望调试器能够拾取它。在这个阶段,我认为您最好提出一个描述您的确切情况的新问题,而不是在此处的 cmets 中进行。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-22
    • 1970-01-01
    • 2021-04-18
    • 2021-06-16
    • 2015-01-02
    • 1970-01-01
    相关资源
    最近更新 更多