再次调试成NuGet包VS 2017

时间:2019-01-10 11:08:51

标签: debugging visual-studio-2017 nuget nuget-package

当尝试调试到.NET Framework类库(在我的情况下是nUnit测试项目)时,我无法进入用符号编译的NuGet包(在文件夹中或在服务器上,在我的情况下为MyGet) )。我已经在这里尝试了一切-

How to debug code in a nuget package created by me

总结我的尝试:

1)使用符号编译软件包,将包含symbol.nupkg的文件夹添加到我正在调试的“调试源文件”列表中的解决方案。将文件夹添加到工具->选项->调试->符号中的列表中。尝试“加载所有模块”和“仅加载指定的模块”。

2)启用/禁用“仅我的代码”

3)手动将pdb文件从程序包项目复制到项目的bin文件夹中,不知道为什么它仍然无法正常工作,但仍然无法执行...

4)将“ SourceLink.Create.CommandLine”包添加到我的项目中。

5)使用符号源服务器(由MyGet提供)

编辑:看来调试器正在使用Temporary ASP.NET文件中的版本,并且由于某些原因,只有一些加载了PDB。无论我使用什么符号服务器,bin目录中的PDB文件,它都坚持只将DLL放入Temp ASP.NET文件中。

Random symbols

这里的所有DLL都使用'Full''Debugging information'选项进行编译,未进行优化,设置了DEBUG / TRACE consts,在symbol.nupkg文件中包含了PDB-基本上,这没有什么特别的在Temp ASP.NET中具有PDB的那些与没有:/

的那些

.snupkg对我来说不是一个选择,因为我正在使用VS 2017。

2 个答案:

答案 0 :(得分:0)

  

调试到NuGet包(再次..)VS 2017

如果没有将符号包部署到SymbolSource服务器,则即使已将Symbols文件夹添加到解决方案中,也无法进入nuget包。那是因为Visual Studio无法解析nuget包中的.pdb文件。

有关某些详细信息,您可以检查another thread关于此问题。

而且,作为调试nuget软件包的轻量级解决方案,您可以使用以下方法:

Is it possible to host both regular and symbols packages in a NuGet local feed on a network share?

此外,MS团队创建了一个新的.snupkg扩展名,该扩展名为整个NuGet生态系统创建了简化的程序包调试体验。您可以查看该文档以获取更多信息:

NuGet Package Debugging & Symbols Improvements

希望这会有所帮助。

答案 1 :(得分:0)

我终于可以将其用于此过程:

1)将MyGet设置为NuGet和符号服务器。

2)可以启用“仅我的代码”。

3)可以禁用“源服务器支持”。

4)选项->调试->空符号缓存。

5)选项-> NuGet->清除NuGet缓存

6)恢复软件包,构建并运行。

这对于MyGet始终有效,但不适用于本地托管的符号(在文件夹中)。