MyGet & SymbolSource.org: VS2012 не находит pdb
Я создал библиотеку на myget (часть ci) и пытаюсь перенести источники символов на symbolsource.org (это отличный сервис, и мне нравится эта идея). Это моя первая попытка. Я использовал инструкции, найденные на сайте myget: http://docs.myget.org/docs/reference/symbolsource, но есть некоторые пробелы.
Вот шаги, которые я прохожу. Сначала я создаю файл nuspec и использую "nuget pack -symbol xxx" для создания файлов X.symbols.nupkg и X.nupkg. Это работает просто отлично. Затем я помещаю их по отдельности в myget и символьный источник. Я использовал проводник nuget pkg для проверки содержимого, и они выглядят так, как я и ожидал (символы src, pdb и dll отображаются в символах). После этого я могу войти в источник символов и увидеть свои пакеты там, используя инструкции на странице myget.
Я использовал следующую команду для перехода на источник символов:
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 не совсем понял, что я должен был делать).
Я тогда пытаюсь отладить. Когда я что-то нажимаю в этой библиотеке, я получаю страницу "No Symbols Loaded" в VS2012. Под деталями, есть попытка дампа 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 есть несколько инструментов отладки - в частности, когда вы смотрите на пакет в своей ленте, вы можете найти ссылку "Компиляции". Нажмите здесь. Он должен показывать строку для каждого типа сборки, который вы загрузили. Мои пакеты не имеют с этим ничего общего - поэтому я как-то испортил свой файл nuspec для генерации символов.
2 ответа
Ответ, оказывается, кусочек скромного пирога. Оказывается, на моем сервере сборки произошел конфликт переменных среды. В результате локальные сценарии сборки создали файл символов просто отлично, а сервер сборки собрал файл без PDB. Конечно, без pdb исходный сервер не смог бы ничего сделать.
Одна вещь, которую я узнал на этом пути, - NuGet PackageExplorer ( https://npe.codeplex.com/). Хотите, чтобы вы могли это использовать, чтобы загрузить пакет символов самородков. Затем с помощью диспетчера подключаемых модулей загрузите подключаемый модуль SymbolesSource (вам придется использовать рынок, но все это бесплатно). Эта утилита уловила бы проблему в моих пакетах, если бы я отправил на нее нужные пакеты (мои локальные пакеты были пропущены).
Попробуйте выделить воспроизводимый сценарий (исключите как можно больше других факторов). Похоже, что ваша Visual Studio настроена правильно, поэтому я с подозрением отношусь к проблемам с пакетом или компиляцией (например, символы и источники не синхронизированы). Не стесняйтесь обращаться в службу поддержки MyGet для получения дополнительной помощи.