Публикация пакета символов * .snupkg в приватном фиде в VSTS

Я хочу упаковать и опубликовать стандартный код .net в виде пакета nuget с использованием сборки VSTS. Я создал частный канал nuget (в VSTS Artifacts), для которого я хотел бы опубликовать пакет nuget вместе с пакетом символов.

Я пробовал использовать задачи интерфейса командной строки dotnet для сборки и публикации, но он публикует только .nupkg, а не * .snupkg, в канал nuget.

Я много гуглил, но нашел только статьи, связанные с публикацией на nuget.org, а не с частным фидом.


person Prado    schedule 16.01.2019    source источник


Ответы (4)


Публикация пакета символов * .snupkg в приватном фиде в VSTS

Вы можете опубликовать пакет символов .snupkg на NuGet.org или на любом сервере NuGet, который поддерживает этот интерфейс. Но приватный канал azure DevOps не имеет такого опыта.

Вы можете получить подробную информацию из этой вики Улучшения отладки пакета NuGet и символов:

  • При публикации пакетов как пакет символов, так и .nupkg будут легко опубликованы на NuGet.org или на любом сервере NuGet, который поддерживает этот интерфейс.

Причина:

Как мы знаем, когда мы потребляем .snupkg в Visual Studio, мы добавляем новое расположение сервера символов в расположение файлов символов (.pdb):

введите описание изображения здесь

Но Visual Studio может анализировать только файл символов (.pdb) напрямую, а не пакет .snupkg, поэтому нам нужен сервер NuGet, который поможет нам прочитать файл .pdb из пакета .snupkg. Канал DevOps Azure больше похож на общий репозиторий пакетов.

Итак, мы должны опубликовать пакет символов * .snupkg на NuGet.org или на любом сервере NuGet, который поддерживает эту возможность.

Если вы не хотите публиковать свой пакет на nuget.org, вы можете разместить ваш собственный сервер NuGet или вы можете использовать легкое решение для устранения этой проблемы (вы можете отлаживать пакет nuget с частным фидом).

Надеюсь это поможет.

person Leo Liu-MSFT    schedule 16.01.2019
comment
Спасибо за решение. Могу ли я опубликовать файл .nupkg на * .pkgs.visualstudio.com и файл .snupkg на nuget.org для того же кода пакета nuget? - person Prado; 16.01.2019
comment
Также в чем разница между использованием * .snupkg и использованием VSTS Symbol Server (с использованием задачи сборки Publish Symbol) для работы с файлами .pdb пакета nuget? - person Prado; 16.01.2019
comment
@ Прадо, боюсь, ты не сможешь этого сделать. Проверьте вики Требования к пакету символов, Чтобы гарантировать, что загруженные символы точно соответствуют загруженным .dll, мы работаем с командами компиляторов, чтобы хранить хэши .pdbs, сгенерированные из .dll, в самой .dll. Это будет требованием для загрузки .nupkgs и .snupkgs на NuGet.org. - person Leo Liu-MSFT; 17.01.2019
comment
* .Snupkg используется для отладки пакета nuget, сервер символов VSTS используется для публикации символов для отладки. Вообще говоря, один используется для прямой отладки пакета nuget, другой - для публикации файлов символов. - person Leo Liu-MSFT; 17.01.2019

Azure Artifacts в настоящее время не поддерживает .snupkgs, но у него есть сервер символов, на котором вы можете публиковать, если вы создаете с помощью Azure Pipelines. Этот документ описывает настройку конвейер, который публикует символы.

person Alex Mullans    schedule 16.01.2019
comment
Фактически, вы можете публиковать файлы snupkg в Azure Artifacts - вы просто не можете использовать их для отладки (на момент написания) - person MercifulGiraffe; 18.01.2019
comment
Немного обновил ответ. Вы правы, что можете опубликовать .snupkgs в сервисе, и они будут приняты. Однако они не могут использоваться для отладки в VS, и они также будут зависеть от имени / версии пакета, используемого вашим nupkg, поэтому вы не сможете опубликовать это и, следовательно, не сможете поделиться битами, которыми вы пытаетесь поделиться. . - person Alex Mullans; 18.01.2019
comment
В настоящее время мы отправляем файлы nupkg и snupkg в Azure DevOps и не видим, что имя / версия пакета прикованы к вам. Не уверен, почему наш опыт отличается от вашего! - person MercifulGiraffe; 20.01.2019
comment
@AlexMullans по умолчанию создает файл symbols.nupkg, а не .snupkg. Это вызывает поведение на корточках, которое вы видите. - person Matthew Steeples; 06.03.2021
comment
Согласно документации для SourceLink пакеты символов не поддерживаются Azure DevOps Artifacts. услуга. - person JamesQMurphy; 09.03.2021

Вы можете опубликовать файлы snupkg в Azure DevOps, но на этом этапе вы не можете использовать их из VS для отладки. Вот как я это сделал:

1) настройте задачу «Использовать .Net Core» для обновления .net sdk до версии, которая поддерживает это (как показано ниже)

Установка SDK

2) настройте пользовательскую команду пакета dotnet (как показано ниже)

упаковать команду

3) отправьте его в Azure с помощью команды dotnet push (как показано ниже)

настройка push dotnet

В результате snupkg передается в артефакты Azure DevOps, таким образом:

результат

person MercifulGiraffe    schedule 17.01.2019
comment
Мне удалось этого добиться, но при взгляде на артефакт в AzureDevops Artifacts, похоже, нет доступных символов. Удалось ли вам их использовать после того, как толкнули? - person Jo Ham; 25.07.2019
comment
@JoHam В последнее время я не пробовал, но когда я опубликовал этот ответ, Azure DevOps не распознал репозиторий артефактов как допустимое расположение символов. Последнее, что я слышал, это было где-то далеко. - person MercifulGiraffe; 26.07.2019

Возможно, вы захотите просто встроить PDB символа в сам основной пакет NuGet. ИМО, это лучший подход здесь сегодня - он намного проще, полностью устраняет необходимость в сервере символов и хорошо работает со всеми типами репозиториев, частные VSTS / Azure DevOps кормят общедоступные репозитории. Единственным недостатком является то, что клиентам приходится загружать пакеты NuGet небольшого размера, даже если они не используют отладочную информацию, но это кажется незначительным.

Добавление PDB в пакет NuGet обычно просто вопрос добавления этого в файл проекта:

<AllowedOutputExtensionsInPackageBuildOutputFolder>$(AllowedOutputExtensionsInPackageBuildOutputFolder);.pdb</AllowedOutputExtensionsInPackageBuildOutputFolder>

См. NuGet # 4142 и Включить файлы pdb в мои файлы nuget (nupkg).

person Bret Johnson - MSFT    schedule 06.05.2019