调试私有NuGet包?

40
我已经将一些私有/内部库发布为 NuGet 包,使用 symbols 选项。这些包和符号存储在一个内部网络共享上。我如何在调试时进入这些包?
当我从这些包的代码跳转到调试时,Visual Studio 显示“无可用源代码”/“未找到符号”页面。单击“加载符号”只允许 pdb 文件,而不是符号包。
这些包不适合在 NuGet Gallery/SymbolSource 上发布。

你找到解决方案了吗? - nozzleman
1
您IP地址为143.198.54.68,由于运营成本限制,当前对于免费用户的使用频率限制为每个IP每72小时10次对话,如需解除限制,请点击左下角设置图标按钮(手机用户先点击左上角菜单按钮)。 - felickz
1
重复的已解决问题:https://dev59.com/Q2Eh5IYBdhLWcg3w7nSW#21922429 - Graham
6个回答

6
你用什么命令生成带符号的软件包?我尝试了完全相同的命令 nuget.exe pack -Prop Configuration=Release Framework.csproj -Symbols,结果生成了两个文件:Framework.nupkgFramework.symbols.nupkg。我将这些文件放在网络共享上,在另一个项目中使用它们,调试工作正常。
你尝试过将 *.nupkg 和 *.symbols.nupkg 文件放在本地磁盘而不是网络共享上吗?

12
这对我没有起作用... 可能你在本地有匹配的符号。 - L.Trabacchin

5

有几个选项; 其中之一是设置和配置自己的符号服务器

您还可以下载Inedo的ProGet,在目标源上启用符号服务,然后将软件包发布到ProGet。所有这些都可以使用ProGet的免费版本完成。


免责声明--我日常工作在Inedo


3

2
我们的做法(并且可行)是:
  1. 生成“*.symbols.nupkg”
  2. 将符号包部署到SymbolSource服务器(私人)
  3. 配置IDE
  4. 使用NuGet(从我们的SymbolSource服务器)添加所需库到项目中
  5. 调试!
有用的链接:
    • SymbolSource服务器安装

    • 重要提示: “Windows调试工具”如果检测到系统中已有比它预期的更新的Visual C++ Redist版本,则不会安装。


2
您可以使用这些网络共享设置自己的符号源服务器。您可以在我的博客上找到逐步教程
基本上,这就是创建一个空的MVC应用程序并运行

Install-Package SymbolSource.Server.Basic

从那里开始,您需要设置托管基础架构并配置Visual Studio和生成代理。

1
我发现它根本不起作用。 NuGet包引用已关闭,不能在调试器中使用。我所做的是从项目中删除程序集引用,并直接通过路径添加对Debug版本DLL的引用。
然后为了使调试器在代码中某个地方停止,我在该代码中插入了调用System.Diagnostics.Debugger.Break();。运行时,调试器将在该行处停止,这基本上是一个由代码定义的断点。这将自动打开正确的源文件并跳转到该行。
在第二个VS实例中打开库项目,并根据需要移动Break调用并重新构建库。完成后,从库代码中删除这些调用并恢复原始引用(可能需要重新安装NuGet包)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接