Можно ли разместить как обычные, так и символьные пакеты в локальном фиде NuGet на общем сетевом ресурсе?
Прежде всего, я все еще новичок в NuGet. У меня есть несколько внутренних настольных приложений на C#, которые я разрабатываю на работе, и между ними есть общий код. Я перешел от использования ссылок на проекты к созданию частных пакетов NuGet и размещению их в локальном фиде, расположенном в общей сетевой папке. Я занимался этим всего несколько дней, но мне удалось превратить несколько моих библиотечных проектов в пакеты и использовать их в других проектах.
Проблема в том, что, хотя я могу использовать код, предоставляемый этими пакетами, в других моих решениях, которые зависят от них, я не получаю поддержку IntelliSense или возможность отладки внутри самого пакета. Оказывается, что в обычных пакетах распространяется только собранная DLL, и из того, что я собрал при поиске в Интернете, мне также нужно создать пакеты символов, которые содержат файлы, необходимые для IntelliSense и отладки.
Как я могу это сделать - используя как обычные пакеты, так и пакеты символов - при использовании в качестве локальной ленты только общей сетевой папки? Многие ответы онлайн предлагают использовать отдельный сервер символов. Тем не менее, я не могу публично опубликовать этот код на symbource.org, и в настоящее время я не могу получить сервер от своего работодателя для размещения (который исключает такие решения, как NuGet.Server, ProGet и т. Д.). Возможно ли то, что я ищу?
Я уже посмотрел официальную документацию по созданию пакетов символов и локальных каналов, а также этот связанный вопрос. Но ни у одного из них нет информации, которую я ищу.
РЕДАКТИРОВАТЬ: я получил поддержку IntelliSense для кода моих пакетов, не забывая включать генерацию документации XML во время сборки, используя информацию из этого вопроса. Все еще не уверен насчет поддержки отладки.
1 ответ
Как я могу это сделать - используя как обычные пакеты, так и пакеты символов - при использовании в качестве локальной ленты только общей сетевой папки?
Боюсь, ответ - нет. Когда я размещаю как обычные, так и символьные пакеты в локальном фиде NuGet на общем сетевом ресурсе, то я установил этот пакет в свой тестовый проект, перейдя к отладке, Visual Studio не смогла загрузить файл.pdb. Поскольку файл.pdb обернут в пакет символов, Visual Studio не может получить к нему прямой доступ. Таким образом, предложение заключается в том, чтобы "использовать отдельный сервер символов".
Поскольку вы не можете публично опубликовать этот код на symbource.org и в настоящее время не можете получить сервер от своего работодателя для его размещения, я хотел бы предоставить вам упрощенное решение здесь:
- Поместите файл pdb и исходный код в пакет NuGet вместе с dll.
- Добавьте исходный код в исходные файлы отладки для решения, которое ссылается на пакет.
Это означает, что вы сможете просматривать код и просматривать исключения, но вам, возможно, придется найти файл на диске и открыть его, прежде чем вы сможете установить точку останова. Очевидно, вы должны быть осторожны, чтобы источник был в правильной редакции.
Более подробно на шаге 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.