我使用symbols选项将一些私有/内部库作为NuGet包发布。包和符号托管在内部网络共享上。调试时如何进入这些包?
当我从这些包中进行编码时,Visual Studio会显示“No Source Available”/“No Symbols Found”页面。单击“加载符号”仅允许pdb文件,而不是符号包。
这些软件包不适合在NuGet Gallery / SymbolSource上发布。
答案 0 :(得分:6)
用于生成包含符号的包的命令是什么?我尝试做同样的事情nuget.exe pack -Prop Configuration=Release Framework.csproj -Symbols
这会创建两个文件: Framework.nupkg 和 Framework.symbols.nupkg 。我把这些文件放在网络共享上,从另一个项目中使用它们,调试工作正常。
您是否尝试将* .nupkg和* .symbols.nupkg文件放在本地磁盘上而不是网络共享上?
答案 1 :(得分:5)
有几种选择;一个是set-up & configure your own symbol server。
您还可以下载Inedo的ProGet,在目标Feed上启用符号服务,然后将您的包发布到ProGet。所有这一切都可以通过免费版的ProGet来完成。
免责声明 - 我的日常工作是Inedo
答案 2 :(得分:3)
现在还有一个名为GitLink(https://github.com/GitTools/GitLink)的工具,它可以在符号文件中插入指向源的版本化GIT文件的链接。
答案 3 :(得分:2)
您可以使用这些网络共享在内部设置自己的符号源服务器。 您可以在我的博客上找到step-by-step tutorial。
它基本上归结为创建一个空的MVC应用程序并运行
Install-Package SymbolSource.Server.Basic
从那时起,您需要设置托管基础架构并配置Visual Studio并构建代理。
答案 4 :(得分:2)
我们这样做(并且有效):
可能有用的链接:
重要提示:如果系统中检测到的Visual C ++ Redist版本比其需要/期望的更新,则无法安装“Windows调试工具”
Vs configuration使用SymbolSource进行调试
要添加的网址类似于http://your.symbolsource-server.com:[port]/[appContext]/WinDbg/pdb
答案 5 :(得分:1)
我发现它根本不起作用。 NuGet包引用已关闭,无法在调试器中使用。我所做的是从项目中删除程序集引用,而是直接通过路径添加对DLL的Debug构建的引用。
然后,为了使调试器在该代码中的某处停止,我在该代码中插入了调用System.Diagnostics.Debugger.Break();
。运行时,调试器将在该行停止,这基本上是代码定义的断点。这将打开正确的源文件并自动跳转到该行。
在第二个VS实例中打开库项目,并根据需要移动Break
调用并重建库。完成后,从库代码中删除这些调用并恢复原始引用(可能需要重新安装NuGet包)。