MyGet& SymbolSource.org:VS2012没有找到pdb

时间:2013-10-21 08:33:01

标签: nuget symbol-server myget

我在myget(ci的一部分)上创建了一个库,我正在尝试将符号源推送到symbolsource.org(这是一个很棒的服务,我喜欢这个想法)。这是我的第一次尝试。我一直在使用myget网站上的说明:http://docs.myget.org/docs/reference/symbolsource,但有一些差距。

以下是我要完成的步骤。首先,我创建一个nuspec文件,然后使用“nuget pack -symbol xxx”创建X.symbols.nupkg和X.nupkg文件。这很好用。然后我将它们分别推送到myget和symbolsource。我使用nuget pkg explorer来检查内容,它们看起来像我期望的那样(src,pdb和dll显示在符号中)。完成推送后,我可以登录symbolsource,然后使用myget页面上的说明查看我的包。

我使用以下命令推送到symbolsource:

nuget push X.symbols.nupkg $ApiKey -Source http://nuget.gw.SymbolSource.org/MyGet/rootdotnet/

然后按照说明配置visual studio:确保关闭“仅启用我的代码”并打开符号服务器。然后,我将以下URL添加到符号服务器列表中:

http://srv.SymbolSource.org/pdb/MyGet/gwatts/XXXXX

XXXX是一个GUID我读取了sumbolsource“你的帐户”/“身份验证”“Visual Studio”表条目(myget根本不清楚这是我应该做的)。

然后我尝试调试。当我在该库中点击某些内容时,我在VS2012中获得了“No Symbols Loaded”页面。根据细节,有一个转储VS2012试图找到pdb文件。我看到以下内容:

C:\Users\Gordon\Documents\Code\HVQCDCorrelationStudy\CalcSimpleCorrelationTestNumbers\bin\x86\Debug\LINQToTTreeLib.pdb: Cannot find or open the PDB file.
c:\TeamCity\buildAgent\work\44463130cd7383cb\LINQToTTree\LINQToTTreeLib\obj\x86\Release\LINQToTTreeLib.pdb: Cannot find or open the PDB file.
C:\WINDOWS\LINQToTTreeLib.pdb: Cannot find or open the PDB file.
C:\WINDOWS\symbols\dll\LINQToTTreeLib.pdb: Cannot find or open the PDB file.
C:\WINDOWS\dll\LINQToTTreeLib.pdb: Cannot find or open the PDB file.
C:\Users\Gordon\AppData\Local\Temp\SymbolCache\LINQToTTreeLib.pdb\9c883e0fa93245c99efd2b92dbfc6dfc1\LINQToTTreeLib.pdb: Cannot find or open the PDB file.
C:\Users\Gordon\AppData\Local\Temp\SymbolCache\MicrosoftPublicSymbols\LINQToTTreeLib.pdb\9c883e0fa93245c99efd2b92dbfc6dfc1\LINQToTTreeLib.pdb: Cannot find or open the PDB file.
C:\Users\Gordon\Documents\Code\HVQCDCorrelationStudy\LINQToTTreeLib.pdb: Cannot find or open the PDB file.
SYMSRV:  C:\Users\Gordon\AppData\Local\Temp\SymbolCache\LINQToTTreeLib.pdb\9C883E0FA93245C99EFD2B92DBFC6DFC1\LINQToTTreeLib.pdb not found


SYMSRV:  http://srv.SymbolSource.org/pdb/MyGet/gwatts/XXXXX/LINQToTTreeLib.pdb/9C883E0FA93245C99EFD2B92DBFC6DFC1/LINQToTTreeLib.pdb not found


http://srv.SymbolSource.org/pdb/MyGet/gwatts/XXXXX: Symbols not found on symbol server.
SYMSRV:  C:\Users\Gordon\AppData\Local\Temp\SymbolCache\LINQToTTreeLib.pdb\9C883E0FA93245C99EFD2B92DBFC6DFC1\LINQToTTreeLib.pdb not found


SYMSRV:  http://msdl.microsoft.com/download/symbols/LINQToTTreeLib.pdb/9C883E0FA93245C99EFD2B92DBFC6DFC1/LINQToTTreeLib.pdb not found


http://msdl.microsoft.com/download/symbols: Symbols not found on symbol server.

简而言之,它似乎正确地与symbolssource.org联系。但有些事情在那里失败了。 9C883E0FA93245C99EFD2B92DBFC6DFC1显然是一个哈希值。我不知道(??)为该库分配了什么哈希符号源 - 虽然我想尝试解决这个问题,因为这可能是了解正在发生的事情的第一步。

基本上。我不知道如何进行调试。任何帮助将不胜感激!

更新:如下面的答案所述,构建一些可以测试的小东西。我已经做到了,它运作得很好。在这样做时,我发现在SymbolSource.org上有一些调试工具 - 具体来说,当您查看Feed中的包时,您可以找到“Compilations”链接。点击它。它应该为您上传的每种构建类型显示一行。我的软件包没有任何关联 - 所以我搞砸了我的nuspec文件以便生成符号。

2 个答案:

答案 0 :(得分:1)

尝试隔离可重现的场景(排除尽可能多的其他因素)。听起来您的Visual Studio设置是正确的,因此我对包或编译问题(例如符号和来源不同步)表示怀疑。请随时与MyGet support联系以获得进一步的帮助。

答案 1 :(得分:0)

事实证明,答案是一块不起眼的馅饼。结果我的构建服务器出现了环境变量冲突。结果是本地构建脚本构建了一个符号文件,并且构建服务器构建了一个没有PDB的文件。当然,如果没有pdb,源服务器就无法做很多事情。

我在途中学到的一件事是NuGet PackageExplorer(https://npe.codeplex.com/)。希望你能做的就是用它来加载nugget符号包。然后使用插件管理器加载SymbolesSource插件(你必须使用市场,但它都是免费的)。如果我提交了适当的软件包,那么这个实用程序会在我的软件包中发现问题(我的本地软件包以快速的颜色传递)。