我生成了一些包含 .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
。
更新:
如果 nuget 包项目和使用它的项目在同一台机器上。
AllowedOutputExtensionsInPackageBuildOutputFolder
属性就足够了。因为你在同一台机器上有源文件,调试引擎可以很容易地找到它,这样你就可以进入它。但如果是这样的场景:您开发了 nuget 包。并分享给其他团队成员。要使它们可以
进入
,您应该将 xx.cs 文件嵌入到 .nupkg 中。
在这种情况下,AllowedOutputExtensionsInPackageBuildOutputFolder
可能不起作用。我找不到使用它嵌入源文件的方法。您可能需要使用 nuget pack 命令
,例如 this issue .实际上,Stephan 打包项目的方式是正确的。我已经检查过它是否工作并将源文件和 .dll 和 .pdb 嵌入到 .nupkg 中。当然,这种方式需要通过Solution=>Properties=>Debug Source files添加源文件repo的路径:
此外:您可以在 post-build event 中添加 nuget pack
命令,这样每次你构建项目成功,它都会为你打包。
另外,你可以考虑source links作为源代码管理,这样您就不会通过 Solution=>properties 配置源路径。
关于c# - Visual Studio 不会从我的 nupkg 中读取 .pdb,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55835965/