Можно ли разместить как обычные, так и символьные пакеты в локальном фиде NuGet на общем сетевом ресурсе?

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

Проблема в том, что, хотя я могу использовать код, предоставляемый этими пакетами, в других моих решениях, которые зависят от них, я не получаю поддержку IntelliSense или возможность отладки внутри самого пакета. Оказывается, что в обычных пакетах распространяется только собранная DLL, и из того, что я собрал при поиске в Интернете, мне также нужно создать пакеты символов, которые содержат файлы, необходимые для IntelliSense и отладки.

Как я могу это сделать - используя как обычные пакеты, так и пакеты символов - при использовании в качестве локальной ленты только общей сетевой папки? Многие ответы онлайн предлагают использовать отдельный сервер символов. Тем не менее, я не могу публично опубликовать этот код на symbource.org, и в настоящее время я не могу получить сервер от своего работодателя для размещения (который исключает такие решения, как NuGet.Server, ProGet и т. Д.). Возможно ли то, что я ищу?

Я уже посмотрел официальную документацию по созданию пакетов символов и локальных каналов, а также этот связанный вопрос. Но ни у одного из них нет информации, которую я ищу.

РЕДАКТИРОВАТЬ: я получил поддержку IntelliSense для кода моих пакетов, не забывая включать генерацию документации XML во время сборки, используя информацию из этого вопроса. Все еще не уверен насчет поддержки отладки.

1 ответ

Решение

Как я могу это сделать - используя как обычные пакеты, так и пакеты символов - при использовании в качестве локальной ленты только общей сетевой папки?

Боюсь, ответ - нет. Когда я размещаю как обычные, так и символьные пакеты в локальном фиде NuGet на общем сетевом ресурсе, то я установил этот пакет в свой тестовый проект, перейдя к отладке, Visual Studio не смогла загрузить файл.pdb. Поскольку файл.pdb обернут в пакет символов, Visual Studio не может получить к нему прямой доступ. Таким образом, предложение заключается в том, чтобы "использовать отдельный сервер символов".

Поскольку вы не можете публично опубликовать этот код на symbource.org и в настоящее время не можете получить сервер от своего работодателя для его размещения, я хотел бы предоставить вам упрощенное решение здесь:

  1. Поместите файл pdb и исходный код в пакет NuGet вместе с dll.
  2. Добавьте исходный код в исходные файлы отладки для решения, которое ссылается на пакет.

Это означает, что вы сможете просматривать код и просматривать исключения, но вам, возможно, придется найти файл на диске и открыть его, прежде чем вы сможете установить точку останова. Очевидно, вы должны быть осторожны, чтобы источник был в правильной редакции.

Более подробно на шаге 1:

Если вы сейчас упаковываете пакет без Nuspec, вам нужно создать Nuspec, а затем добавить pdb в список файлов в папке lib и в исходный файл в папке src. "Спецификация NuGet" может быть полезной командой для генерации начальной спецификации, как определено в документации NuGet. Ниже мой файл.nuspec, вы можете проверить его:

<?xml version="1.0"?>
  <package >
    <metadata>
     <id>MyTestPackage</id>
     <version>1.0.3</version>
     <authors>Admin</authors>
     <owners>Admin</owners>
     <requireLicenseAcceptance>false</requireLicenseAcceptance>
     <description>Package description</description>
     <releaseNotes>Summary of changes made in this release of the package.</releaseNotes>
     <copyright>Copyright 2017</copyright>
     <tags>Tag1 Tag2</tags>
   </metadata>

   <files>
     <file src="bin\Debug\MyTestPackage.dll" target="lib\Net46" />
     <file src="bin\Debug\MyTestPackage.pdb" target="lib\Net46" />
     <file src="Class1.cs" target="src" />
   </files>
</package>

Более подробно на шаге 2:

Когда у вас есть открытое решение, щелкните правой кнопкой мыши Solution, выберите Properties...Common Properties...Debug Source Files и добавьте корневой исходный каталог для соответствующей двоичной ссылки.

Или посмотрите MSDN. Обратите внимание, что вы не можете открыть свойства решения во время отладки.

С этими настройками в.nuspec вам нужно только установить этот обычный пакет в локальном фиде NuGet на сетевом ресурсе. Установите этот пакет, после чего вы сможете выполнить отладку внутри самого пакета.

Кроме того, SymbolSource выпустил выпуск для сообщества под названием SymbolSource Server Basic.

Другие вопросы по тегам