c# - Visual Studio 不会从我的 nupkg 中读取 .pdb

标签 c# visual-studio msbuild nuget

我生成了一些包含 .pdbs 的 nuget 包,内容如下:

<AllowedOutputExtensionsInPackageBuildOutputFolder>$(AllowedOutputExtensionsInPackageBuildOutputFolder);.pdb</AllowedOutputExtensionsInPackageBuildOutputFolder>

我已验证 .pdb 位于 dll 旁边的 lib/*/文件夹中生成的 .nupkg 中。

但是,当我在 Visual Studio 2017 中使用这些 nuget 包时,它只提取 .dll 而不是 .pdb。让我无法调试包。

我做错了什么?

最佳答案

因为您可以确保 .nupkg 包含 .pdb 文件。请确保两个项目都处于 Debug模式。

在本地使用 nuget 包有时与从 nuget.org 安装它有一些不同。 .pdb 源不会在解决方案中找到。默认情况下,.pdb 将位于如下路径:C:\Users\xxx\.nuget\packages\PackageName\xxx

更新:

  1. 如果 nuget 包项目和使用它的项目在同一台机器上。 AllowedOutputExtensionsInPackageBuildOutputFolder 属性就足够了。因为你在同一台机器上有源文件,调试引擎可以很容易地找到它,这样你就可以进入它。

  2. 但如果是这样的场景:您开发了 nuget 包。并分享给其他团队成员。要使它们可以进入,您应该将 xx.cs 文件嵌入到 .nupkg 中。

在这种情况下,AllowedOutputExtensionsInPackageBuildOutputFolder 可能不起作用。我找不到使用它嵌入源文件的方法。您可能需要使用 nuget pack 命令,例如 this issue .实际上,Stephan 打包项目的方式是正确的。我已经检查过它是否工作并将源文件和 .dll 和 .pdb 嵌入到 .nupkg 中。当然,这种方式需要通过Solution=>Properties=>Debug Source files添加源文件repo的路径: enter image description here

此外:您可以在 post-build event 中添加 nuget pack 命令,这样每次你构建项目成功,它都会为你打包。

另外,你可以考虑source links作为源代码管理,这样您就不会通过 Solution=>properties 配置源路径。

关于c# - Visual Studio 不会从我的 nupkg 中读取 .pdb,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55835965/

相关文章:

c# - 常量字符串声明/初始化断点

c++ - 编译器特定的内存初始化

visual-studio-2010 - 使用 Visual Studio 2010 构建 x64 WIX 项目?

c# - Web Api 2 接收 json 数组

c# - WPF 中的绑定(bind)未按预期工作

c# - 了解不安全代码及其用途

c - 使用 Visual Studio 构建 UEFI 驱动程序

c# - 在 visual studio 解决方案资源管理器中隐藏具有某些扩展名 (dll) 的文件

msbuild - 如何在 MSBuild 中连接文件并保留制表符和空格

c# - GridView分页问题