Символы ProGet и исходный сервер: загрузите pdb правильно, но источник не найден - PullRequest
0 голосов
/ 28 мая 2019

У меня проблема с исходными файлами и символами с использованием ProGet и VS2017 / VS2019.

Мой сценарий следующий:

  1. Разработка тестовой сборки на моем компьютере
  2. Push-файлы модов на нашем git-сервере
  3. Получение мод-файлов в нашем TeamCity (2019.1)
  4. Сборка исходного кода в режиме Release, упаковка и публикация AssemblyTest.symbols.nupkg в ProGet (5.2.3)
  5. В VS2017 я создал тестовое консольное приложение, установил AssemblyTest с помощью Package Reference, и я попытался просто нажать F12 на классе в моем коде, чтобы показать исходный код или вступить в отладкуmode.

Я настроил VS2017 в соответствии с указаниями руководства здесь

Команда nuget pack была запущена с параметром командной строки -symbols и symbol.nupkg.был создан со следующей структурой

  • пакет
    • сервис
    • метаданные
      • ...
  • lib
    • net472
      • TestAssembly.dll
      • TestAssembly.pdb
      • TestAssembly.xml
  • src
    • Свойства
      • AssemblyInfo.cs
    • TestClass.cs

При нажатии F12 на TestClass в моем коде pdb был правильно загружен в

c: \ users \ me \ appdata \ local \ temp \ symbolcache \ testassembly.pdb \ bf5be5cd155e4400b9b18c0e1e6a05941 \ testassembly.pdb

и выбор элемента ReSharper формируют выпадающий список в окне вывода в Visual Studio Iсм.

PdbNavigator: Downloader: http://srv.symbolsource.org/pdb/Public/testassembly.pdb/bf5be5cd155e4400b9b18c0e1e6a05941/testassembly.pdb -> The remote server returned an error: (500) Internal Server Error. 
--OK, it's MS symbol server

PdbNavigator: Downloader: http://myproget/symbols/dev/testassembly.pdb/bf5be5cd155e4400b9b18c0e1e6a05941/testassembly.pdb -> ok, 15.5 KB
-- OK, it's our ProGet server

PdbNavigator: Searching for 'TestAssembly.TestClass' type sources in C:\Users\me\AppData\Local\Temp\SymbolCache\TestAssembly.pdb\bf5be5cd155e4400b9b18c0e1e6a05941\TestAssembly.pdb

PdbNavigator: Downloader: http://myproget/source-files/dev/TestAssembly/1.0.0.10/TestClass.cs -> The remote server returned an error: (404) Not Found.
-- Here we come :(

PdbNavigator: No sources found in debugging information for 'TestAssembly.TestClass' in assembly 'TestAssembly, Version=1.0.0.10, Culture=neutral, PublicKeyToken=null'

В моей папке Symbolcache есть подпапка с этим путем

C: \ Users \ me \ AppData \ Local \ Temp \ SymbolCache \ src \ source-files \ dev \TestAssembly \ 1.0.0.10

, но вместо этого нет исходного файла.

Взглянув внутрь файла pdb, я нашел

SRCSRV: ini ------------------------------------------------
VERSION=2
INDEXVERSION=2
VERCTRL=http
SRCSRV: variables ------------------------------------------
SRCSRVVERCTRL=http
PGSERVER=http://myproget/source-files
PGFEED=dev
PGPKGID=TestAssembly
PGPKGVER=1.0.0.10
HTTP_EXTRACT_TARGET=%pgserver%/%pgfeed%/%pgpkgid%/%pgpkgver%/%var2%
SRCSRVTRG=%http_extract_target%
SRCSRVCMD=
SRCSRV: source files ---------------------------------------
c:\buildagent\work\b5cfc05c815c43d9\testassembly\testclass.cs*TestClass.cs
SRCSRV: end ------------------------------------------------

Итак, мой вопрос: как я могу правильно загрузить исходный файл из ProGet?Что не так в моем сценарии?

Спасибо!

Фабрицио

1 Ответ

0 голосов
/ 31 мая 2019

С точки зрения ProGet, конечная точка /source-files/* возвращает 404 в любом из следующих случаев:

  • имя канала (т. Е. dev в вашем примере) не найдено
  • канал не является каналом NuGet
  • сервер символов не включен для канала
  • версия пакета отсутствует в URL /source-files
  • версия пакета не является верной версией NuGet (1.0.0.10 выглядит нормально)
  • сам файл (например, TestClass.cs в вашем примере) не найден в папке /src в пакете

При этом вы можете проверить в самом ленте, что эти исходные файлы присутствуют, используя вкладку Файлы для версии 1.0.0.10 этого пакета?Я знаю, если обычный, не символьный пакет помещается после одного символа, он может перезаписать его, что эффективно удаляет эти файлы.

...