O que os triângulos de aviso amarelo significam em dependências no Visual Studio 2017?

100

Acabei de converter minha biblioteca PCL em uma nova biblioteca .Net Standard e tenho alguns triângulos de aviso amarelo em minhas dependências mostradas abaixo:

insira a descrição da imagem aqui

Durante a conversão, ele trouxe todos os pacotes nuget, incluindo dependências, para que pudessem ser duplicados.

Como faço para descobrir o que os triângulos de aviso amarelos representam?

EDITAR

Criar registros:

Para evitar que o NuGet restaure pacotes durante a compilação, abra a caixa de diálogo Opções do Visual Studio, clique no nó Gerenciador de pacotes e desmarque 'Permitir que o NuGet baixe pacotes ausentes durante a compilação'. NU1605: Downgrade do pacote detectado: NUnit de 3.8.1 para 2.6.4. Consulte o pacote diretamente do projeto para selecionar uma versão diferente.
MyProj.UI.Tests -> MyProj.Core.Tests -> NUnit (> = 3.8.1)
MyProj.UI.Tests -> NUnit (> = 2.6.4) NU1605: Downgrade do pacote detectado: NUnit de 3.8.1 para 2.6.4. Consulte o pacote diretamente do projeto para selecionar uma versão diferente. MyProj.UI.Tests.iOS -> MyProj.UI.Tests -> MyProj.Core.Tests -> NUnit (> = 3.8.1) MyProj.UI.Tests.iOS -> NUnit (> = 2.6.4) NU1605: Downgrade do pacote detectado: NUnit de 3.8.1 para 2.6.4. Consulte o pacote diretamente do projeto para selecionar uma versão diferente.
MyProj.UI.Tests.Android -> MyProj.UI.Tests -> MyProj.Core.Tests -> NUnit (> = 3.8.1) MyProj.UI.Tests.Android -> NUnit (> = 2.6.4)

usuário1
fonte
Passe o mouse sobre eles e ele lhe dirá. Na maioria das vezes, é porque não consegue encontrar / resolvê-los ou existe um conflito. Se você também olhar na janela Erro, ela tende a explicar o erro na solução.
Nkosi
52
@Nkosi pairando sobre eles não mostra nada para mim
usuário1
2
Essas referências são usadas quando você constrói seu programa. Mas eles também são importantes para o IDE, ele precisa resolvê-los para fornecer o IntelliSense. Se isso falhar, você receberá o triângulo de advertência. Use Build> Build para obter uma mensagem de erro.
Hans Passant
27
Quando isso aconteceu comigo, não houve avisos de construção. O ícone de aviso estava preso na IU. Descarregar e recarregar o projeto consertou.
StackOverthrow
1
@TKK: Acho que dura apenas alguns minutos, então os triângulos de aviso aparecem na IU. Pelo menos foi o que aconteceu comigo depois de reabrir a solução. A princípio pensei que estava corrigido, mas então os triângulos de aviso reapareceram de repente.
PussInBoots

Respostas:

68

Por mais banal que pareça, tente reconstruir e reinicie o VS - e continue com o seu dia :)

Tim Tyler
fonte
5
Obrigado por me lembrar da solução clássica "tente reiniciá-lo" :). Passei a última hora me perguntando por que o VS estava removendo meus pacotes quando criei minha solução. Reiniciei o VS e tudo funcionou conforme o esperado. / ugh
Ryan E.
1
O clássico "desligamento" nem sempre é a solução para todas as
maldades
Acabei de atualizar hoje meu Visual Studio 2019 com a versão mais recente (16.5.1) para ser exato. E o problema ainda existe, mas esta solução ainda funciona :)
Willy David Jr
Desligue e ligue novamente :-D
Don Ch
62

executado dotnet restoreantes de fazer qualquer manipulação complicada, você receberá muito mais informações do que na janela de erro ou explorador de soluções.

Você pode executar este comando no console do gerenciador de pacotes:

Ferramentas> Gerenciador de pacotes NuGet> Console do gerenciador de pacotes

AlexandreG
fonte
4
Apenas reabrir a solução em vez de reiniciar o VS funcionou para mim também.
Quido
por que eu faria a restauração dotnet? a construção não tem que fazer isso?
pabrams
11

No log de compilação, percebi o seguinte:

C: \ Arquivos de programas \ dotnet \ sdk \ 2.0.2 \ Sdks \ Microsoft.NET.Sdk \ build \ Microsoft.NET.Sdk.DefaultItems.targets (199,5): aviso: uma PackageReference para 'NETStandard.Library' foi incluído no seu projeto. Este pacote é referenciado implicitamente pelo .NET SDK e normalmente você não precisa fazer referência a ele em seu projeto. Para obter mais informações, consulte https://aka.ms/sdkimplicitrefs

Portanto, desinstalei todos os pacotes listados como dependências para o .Net Standard nuget listado aqui:

.NETStandard 1.1

  • Microsoft.NETCore.Platforms (> = 1.1.0)

  • System.Collections (> = 4.3.0)

  • System.Collections.Concurrent (> = 4.3.0)

  • System.Diagnostics.Debug (> => 4.3.0)

  • System.Diagnostics.Tools (> = 4.3.0)

  • System.Diagnostics.Tracing (> = 4.3.0)

  • System.Globalization (> = 4.3.0)

  • System.IO (> = 4.3.0)

  • System.IO.Compression (> = 4.3.0)

  • System.Linq (> = 4.3.0)

  • System.Linq.Expressions (> = 4.3.0)

  • System.Net.Http (> = 4.3.2)

  • System.Net.Primitives (> = 4.3.0)

  • System.ObjectModel (> = 4.3.0)

  • System.Reflection (> = 4.3.0)

  • System.Reflection.Extensions (> = 4.3.0)

  • System.Reflection.Primitives (> = 4.3.0)

  • System.Resources.ResourceManager (> = 4.3.0)

  • System.Runtime (> = 4.3.0)

  • System.Runtime.Extensions (> = 4.3.0)

  • System.Runtime.InteropServices (> = 4.3.0)

  • System.Runtime.InteropServices.RuntimeInformation (> => 4.3.0)

  • System.Runtime.Numerics (> = 4.3.0)

  • System.Text.Encoding (> = 4.3.0)

  • System.Text.Encoding.Extensions (> = 4.3.0)

  • System.Text.RegularExpressions (> = 4.3.0)

  • System.Threading (> = 4.3.0)

  • System.Threading.Tasks (> = 4.3.0)

  • System.Xml.ReaderWriter (> = 4.3.0)

  • System.Xml.XDocument (> = 4.3.0)

E os avisos amarelos desapareceram.

A partir daqui: https://blogs.msdn.microsoft.com/dotnet/2017/08/14/announcing-net-standard-2-0/

Também descobri que você pode usar a propriedade NoWarn como a seguir:

<ItemGroup>
  <PackageReference Include="Huitian.PowerCollections" Version="1.0.0" NoWarn="NU1701" />
</ItemGroup>
usuário1
fonte
7

O triângulo amarelo significa que os arquivos físicos do pacote desapareceram e não estão mais disponíveis no disco rígido.

Isso geralmente acontece ao emitir uma get latest versionsolicitação no controle de origem no TFS, especialmente ao usar uma nova máquina, e você deseja obter o código do projeto do servidor TFS.

Também pode ser causado pelo low quality internet connectionqual quase sempre resultará em perda de dados ou arquivos baixados corrompidos.

insira a descrição da imagem aqui

Se o problema estiver faltando alguns pacotes, você pode modificar o packages.configarquivo e remover esses pacotes do packages.confige reinstalar os pacotes ausentes por meio do gerenciador de pacotes nuget.

Mas se o problema está faltando mais do que alguns pacotes, a melhor e mais rápida maneira que uso para recuperar pacotes ausentes é:

  1. Abrindo uma nova instância de estúdio visual
  2. Crie uma nova solução de projeto com o mesmo tipo de projeto como aquele com pacotes ausentes (exemplo: ASP.Net MVC com conta de usuário individual)
  3. Atualize os pacotes do novo projeto para o mais recente para corresponder às versões dos pacotes da solução do projeto anterior
  4. Abra o explorador de arquivos e navegue até a pasta de pacotes na nova solução que você criou
  5. Copie todo o conteúdo da pasta Packagesselecionando tudo, Observação NÃO copie a pasta Pacotes em si, apenas o conteúdo dentro da pasta
  6. Cole isso em sua solução anterior (solução com os pacotes ausentes), na Packagespasta com sobrescrever itens existentes.
  7. Vá para a pasta de pacotes no explorador de soluções e expanda-a, em seguida, clique no botão Atualizar para ver que muitos dos pacotes ausentes agora estão aparecendo sem o triângulo amarelo
  8. Por último, você vai acabar com alguns pacotes ausentes, que não são incluídos por padrão quando você cria uma nova solução, você precisa removê-los do seu arquivo packages.config (o arquivo que os gerenciadores de pacotes nuget) lêem para determinar os pacotes instalados, e instale-os como novos usando o gerenciador de pacotes nuget.

Observe que problemas relacionados a arquivos ausentes de projetos são sempre difíceis de corrigir e dependem da experiência do desenvolvedor, portanto, não espere uma solução fácil para este.

Sobre a causa do erro, a Microsoft diz que é um bug, mas pode acontecer em qualquer versão do Visual Studio.

Ashraf Abusada
fonte
1
Em relação aos projetos, reiniciar o Visual Studio (2019) pareceu consertar para mim.
Steve Smith
não há
pacotes.coinfig
6

Apenas para fins de documentação para nova pessoa com esse problema, tente isso e você se lembrará de mim: D

Se você for para: Ferramentas> Administrador do NuGet> Configurações. e você marcou "Permitir nuget ...." e "verificar automaticamente ....".

A única coisa que você precisa fazer é clicar no botão "Limpar todos os cache (s) NuGet"

É isso, você não tem que editar as ideias do manual, o que pode ser perigoso, acredite, eu costumava precisar fazer algumas das etapas que descrevo aqui muito tempo, e tentar mais de 5 etapas da documentação oficial da microsoft para esse problema você pode verificar aqui: https://docs.microsoft.com/es-es/nuget/consume-packages/package-restore#restore-packages-automatically-using-visual-studio

Mas apenas limpar o cache resolve todos os problemas

sgrysoft
fonte
4

Se você tiver o ícone de aviso, mas nenhum aviso e nada parecer realmente errado, clique com o botão direito do mouse no projeto> Descarregar projeto> clique com o botão direito no projeto novamente> Recarregar projeto. O ícone apareceu por um momento e depois foi limpo para mim no Visual Studio 2019. Isso evita uma reinicialização completa do Visual Studio.

xr280xr
fonte
2

Curiosamente, meu projeto .Net Core 3 precisava que eu simplesmente clicasse em "Carregar dependências do projeto" no contexto do projeto e, em seguida, o ícone de aviso desaparecia.

Captura de tela útil:

insira a descrição da imagem aqui

Coruscate5
fonte
1

Acabei de atualizar o Visual Studio para 16.4.4 e o problema foi resolvido. A referência é fixa e não mais triângulo amarelo. Obrigado.

Ali Keserwan
fonte
1

Enfrentei esse erro ao clonar o projeto. o principal motivo foi que os pacotes Nuget não puderam ser restaurados e eu encontrei uma solução tornando nuget.org apenas o recurso ativo.

insira a descrição da imagem aqui

Certifique-se de selecionar Nuget.org como único recurso ativo.

Espero que ajude

Shervin Ivari
fonte
1

O sinal de exclamação amarelo geralmente é devido à falta de referência ou dll não suportado. Se você clonar um repositório, há chances de que muitos dos pacotes nugget mostrem uma exclamação amarela. Se você verificou que a versão do projeto é adequada e ainda assim o problema existe, você pode tentar a solução abaixo.

No console do gerenciador de pacotes, selecione o projeto no qual você está enfrentando este problema e digite o seguinte comando.

Update-Package -Reinstall

Isso forçará a reinstalação de todos os pacotes. Este comando não atualizará a versão dos pacotes NuGet, simplesmente forçará a reinstalação.

Essa solução funcionou no meu caso. Estou usando o VS2019. Espero que isso ajude outras pessoas também.

Ensolarado
fonte
0

Pode haver um pacote que pode fazer com que todos os outros não sejam carregados. tente comentar os pacotes de .csproj um por um e descubra qual é o problema para restringi-lo.

Guven Sezgin Kurt
fonte
0

Se eu tentar desinstalar Microsoft.NETCore.Platformsconforme indicado na resposta marcada , recebo o seguinte erro:

Não é possível desinstalar 'Microsoft.NETCore.Platforms.1.1.0' porque 'NETStandard.Library.2.0.3' depende dele.

Desinstalei os outros pacotes, mas ainda recebo o NETSDK1023erro:

Um PackageReference para 'NETStandard.Library' foi incluído em seu projeto. Este pacote é referenciado implicitamente pelo .NET SDK e normalmente você não precisa fazer referência a ele em seu projeto. Para obter mais informações, consulte https://aka.ms/sdkimplicitrefs

Agora eu editei meu .csproj e excluí a parte seguinte

<PackageReference Include="NETStandard.Library" Version="2.0.3" />

conforme indicado em https://aka.ms/sdkimplicitrefs em Recomendações :

Ao direcionar o .NET Core ou .NET Standard, nunca tenha uma referência explícita aos metapacotes Microsoft.NETCore.Appou NETStandard.Librarypor meio de um <PackageReference>item em seu arquivo de projeto.

Agora o aviso foi embora!

testando
fonte
0

Nenhuma das opções acima funcionou para mim. Tive um projeto na solução com triângulos de aviso nas dependências de outros projetos na solução, o que causou muitos erros vermelhos no VS. No entanto, ele iria construir, executar e depurar muito bem. Eu finalmente descarreguei o projeto com um clique com o botão direito do mouse no nome do projeto na árvore da solução e, em seguida, recarreguei o projeto e tudo está feliz agora. Obrigado Visual Studio, smh. Estou usando o VS 2019 16.7.1

user2178025
fonte
0

Reiniciar a máquina

Eu acredito que minha situação era que algum processo não estava liberando certas dlls após uma liberação de cache e, em seguida, qualquer aquisição de dlls falhou devido a esse bloqueio (?).

Ao reiniciar minha máquina e donet restoreresolver o problema, eu poderia construir novamente sem o erro de pacote ausente.

ΩmegaMan
fonte
-3

Se não houver nenhum problema com você para atualizar todos os pacotes NuGet, isso pode resolver esse problema.

Menu Ferramentas -> Gerenciador de Pacotes NuGet -> Gerenciar Pacotes Nuget para Solução . Quando este menu aparecer, clique na guia Atualizar e clique no botão Atualizar tudo .

Top Systems
fonte
4
Isso não atualizaria todos os pacotes para a versão mais recente? Isso pode não ser desejável se uma versão específica (não mais recente) de um ou mais pacotes for necessária.
Gertsen de
Se você já está usando os pacotes mais recentes, esta é uma excelente solução. Corrigido meu problema imediatamente.
n4rzul
1
Essa nem sempre é a solução. Às vezes, há pacotes no projeto que não devem ser atualizados.
caras