Feed NuGet do Azure DevOps com símbolos

Nov 05 2020

Para depuração, preciso enviar meus pacotes NuGet, incluindo Symboles, para nosso Servidor Devops do Azure auto-hospedado .

Portanto, uso a dotnet packtarefa com os sinalizadores --include-symbolse --include-sourceem meu pipeline de construção. Como saída, recebo dois arquivos package.1.0.0.nupkge package.1.0.0.symbols.nupkg.

Quando tento empurrar o package.1.0.0.symbols.nupkgpacote em meu canal de lançamento, recebo o feedback:

409 (Conflito - O feed já contém "package.1.0.0". (ID da atividade DevOps: 766B8BC7-9AE6-4998-A246-47397236122F)).

Eu encontrei Publish * .snupkg symbol package to private feed no VSTS on stack. O feedback é que o Azure DevOps Server não oferece suporte a símbolos NuGet e eles sugerem o uso de um servidor de símbolo.

É uma solução possível simplesmente renomear o package.1.0.0.symbols.nupkgpara package.1.0.0.nupkge enviar este pacote para o feed? O Visual Studio é capaz de abrir o depurador dentro das fontes desse tipo de pacote?

Existe outra maneira de fornecer símbolos NuGet para depuração em um servidor DevOps do Azure ?

Respostas

1 LeoLiu-MSFT Nov 06 2020 at 05:57

Existem várias questões em sua postagem, vamos tentar resolvê-las uma por uma.

  1. É uma solução possível simplesmente renomear o pacote.1.0.0.symbols.nupkg para package.1.0.0.nupkg e enviar esse pacote para o feed?

A resposta é não. O erro 409 (Conflict - The feed already contains "package.1.0.0"significa que você já tem um pacote package.1.0.0.nupkgou package.1.0.0.symbols.nupkgcom version 1.0.0em seu feed. Portanto, você não pode enviar outro pacote com a mesma versão nesse feed. A versão do pacote no feed é única. Para proteger o pacote de pisar um no outro por causa da mesma versão do pacote.

Então, para resolver esse erro, você precisa atualizar a versão do pacote, como 1.0.1( Excluir a versão antiga do pacote do feed não resolverá esse erro ).

  1. O Visual Studio é capaz de abrir o depurador dentro das fontes desse tipo de pacote?

A resposta curta é sim. Os detalhes serão explicados na próxima pergunta.

  1. Existe outra maneira de fornecer símbolos NuGet para depuração em um servidor DevOps do Azure?

A resposta é sim, precisamos configurar o Visual Studio para habilitar a depuração de pacotes remotos. Você pode consultar abaixo o documento oficial e o blog detalhado:

Depurar com símbolos no Visual Studio

Pacotes Nuget de Depuração ASP.NET Core com AzureDevOps | VSTS Symbol Server

  1. Mas quando eu uso o pacote de instalação do nuget, apenas o package.dll faz parte do conteúdo que é baixado dos Artefatos do Azure DevOps. Por que é que?

Este é o comportamento esperado para instalar o pacote. Porque na maioria das vezes quando instalamos e usamos o pacote nuget, não precisamos do pacote de depuração, então o pacote de instalação apenas adicionará a dll necessária ao projeto e não configurará o pacote Symbols. Se quisermos depurar o pacote, temos que configurar o pacote Symbols como os links acima.

  1. O feedback é que o Azure DevOps Server não oferece suporte a símbolos NuGet e eles sugerem o uso de um servidor de símbolo.

O feedback que você mencionou na pergunta é para o pacote de símbolos * .snupkg e não para o pacote de símbolos. O Azure DevOps Server deve oferecer suporte à publicação de pacotes de símbolos NuGet, não aos pacotes de depuração, temos que configurar manualmente o Visual Studio para usar o Azure DevOps Server.

Aliás, como há muitas perguntas em sua postagem e são mais gerais, minha resposta não é muito específica. Se você tiver alguma dúvida sobre perguntas específicas, fique à vontade para abrir uma nova postagem com perguntas detalhadas.