¿Qué significan los triángulos de advertencia amarillos en las dependencias en Visual Studio 2017?


110

Acabo de convertir mi biblioteca PCL a una nueva biblioteca .Net Standard y tengo algunos triángulos de advertencia amarillos en mis dependencias que se muestran a continuación:

ingrese la descripción de la imagen aquí

Durante la conversión, trajo todos los paquetes nuget, incluidas las dependencias, para que pudieran ser dulicates.

¿Cómo averiguo qué representan los triángulos de advertencia amarillos?

EDITAR

Registros de compilación:

Para evitar que NuGet restaure paquetes durante la compilación, abra el cuadro de diálogo Opciones de Visual Studio, haga clic en el nodo Administrador de paquetes y desmarque 'Permitir que NuGet descargue los paquetes que faltan durante la compilación'. NU1605: degradación de paquete detectada: NUnit de 3.8.1 a 2.6.4. Haga referencia al paquete directamente desde el proyecto para seleccionar una versión diferente.
MyProj.UI.Tests -> MyProj.Core.Tests -> NUnit (> = 3.8.1)
MyProj.UI.Tests -> NUnit (> = 2.6.4) NU1605: Paquete detectado degradado: NUnit de 3.8.1 a 2.6.4. Haga referencia al paquete directamente desde el proyecto para seleccionar una versión diferente. MyProj.UI.Tests.iOS -> MyProj.UI.Tests -> MyProj.Core.Tests -> NUnit (> = 3.8.1) MyProj.UI.Tests.iOS -> NUnit (> = 2.6.4) NU1605: Cambio de categoría del paquete detectado: NUnit de 3.8.1 a 2.6.4. Haga referencia al paquete directamente desde el proyecto para seleccionar una versión diferente.
MyProj.UI.Tests.Android -> MyProj.UI.Tests -> MyProj.Core.Tests -> NUnit (> = 3.8.1) MyProj.UI.Tests.Android -> NUnit (> = 2.6.4)


59
@Nkosi al pasar el cursor sobre ellos no me muestra nada
user1

1
Verifique la ventana de errores entonces
Nkosi

3
Estas referencias se utilizan al crear su programa. Pero también son importantes para el IDE, debe resolverlos para proporcionar IntelliSense. Si eso falla, aparece el triángulo de advertencia. Use Build> Build para obtener un mensaje de error.
Hans Passant

34
Cuando esto me sucedió, no hubo advertencias de compilación. El icono de advertencia se quedó atascado en la interfaz de usuario. La descarga y recarga del proyecto lo solucionó.
StackOverthrow

1
@TKK: Creo que esto solo dura un par de minutos, luego aparecen los triángulos de advertencia en la interfaz de usuario. Al menos eso es lo que me pasó después de reabrir la solución. Al principio pensé que estaba arreglado, pero luego los triángulos de advertencia reaparecieron repentinamente.
PussInBoots

Respuestas:


78

Por trillado que parezca, intente reconstruir y luego reiniciar VS, y continúe con su día :)


5
Gracias por recordarme la clásica solución "intente reiniciarlo" :). Pasé la última hora preguntándome por qué VS estaba eliminando mis paquetes cuando construí mi solución. Reinicié VS y todo funcionó como se esperaba. / ugh
Ryan E.

1
El clásico "cierre" no siempre es la solución de toda la maldad del mundo: /
sgrysoft

Acabo de actualizar hoy mi Visual Studio 2019 con la última versión (16.5.1) para ser exactos. Y el problema aún existe, pero esta solución aún funciona :)
Willy David Jr

Apáguelo y vuelva a encenderlo :-D
Don Ch

63

ejecutar dotnet restoreantes de realizar cualquier manipulación complicada, se le proporcionará mucha más información que en la ventana de error o el explorador de soluciones.

Puede ejecutar este comando en la consola del administrador de paquetes:

Herramientas> Administrador de paquetes NuGet> Consola del administrador de paquetes


4
Reabrir la solución en lugar de reiniciar VS también funcionó para mí.
Quido

¿Por qué debería restaurar dotnet? ¿no tiene que hacer eso la construcción?
pabrams

12

En el registro de compilación, me di cuenta de esto:

C: \ Archivos de programa \ dotnet \ sdk \ 2.0.2 \ Sdks \ Microsoft.NET.Sdk \ build \ Microsoft.NET.Sdk.DefaultItems.targets (199,5): advertencia: una PackageReference para 'NETStandard.Library' fue incluido en su proyecto. El SDK de .NET hace referencia implícitamente a este paquete y normalmente no es necesario hacer referencia a él desde su proyecto. Para obtener más información, consulte https://aka.ms/sdkimplicitrefs

Por lo tanto, fui y desinstalé todos los paquetes que estaban listados como dependencias para el .Net Standard nuget enumerado aquí:

.NET Estándar 1.1

  • Microsoft.NETCore.Platforms (> = 1.1.0)

  • Colecciones del sistema (> = 4.3.0)

  • System.Collections.Concurrent (> = 4.3.0)

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

  • System.Diagnostics.Tools (> = 4.3.0)

  • Sistema.Diagnóstico.Tracing (> = 4.3.0)

  • Sistema.Globalización (> = 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)

  • Sistema.Reflexión (> = 4.3.0)

  • System.Reflection.Extensions (> = 4.3.0)

  • System.Reflection.Primitives (> = 4.3.0)

  • System.Resources.ResourceManager (> = 4.3.0)

  • Tiempo de ejecución del sistema (> = 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)

Y las advertencias amarillas desaparecieron.

Desde aquí: https://blogs.msdn.microsoft.com/dotnet/2017/08/14/announcing-net-standard-2-0/

También descubrí que puede usar la propiedad NoWarn como se muestra a continuación:

<ItemGroup>
  <PackageReference Include="Huitian.PowerCollections" Version="1.0.0" NoWarn="NU1701" />
</ItemGroup>

8

El triángulo amarillo significa que los archivos físicos del paquete se han ido y ya no están disponibles en el disco duro.

Esto suele suceder cuando se emite una get latest versionsolicitud de control de código fuente en TFS, especialmente cuando se usa una máquina nueva y desea obtener el código de su proyecto del servidor TFS.

También puede ser causado por lo low quality internet connectioncual casi siempre dará como resultado la pérdida de datos o archivos descargados dañados.

ingrese la descripción de la imagen aquí

Si al problema le faltan un par de paquetes, puede modificar el packages.configarchivo y eliminar estos paquetes del packages.configy volver a instalar los paquetes faltantes a través del administrador de paquetes nuget.

Pero si al problema le faltan más de unos pocos paquetes, la mejor y más rápida forma que utilizo para recuperar los paquetes que faltan es mediante:

  1. Abriendo una nueva instancia de Visual Studio
  2. Cree una nueva solución de proyecto con el mismo tipo de proyecto que el que tiene paquetes faltantes (Ejemplo: ASP.Net MVC con cuenta de usuario individual)
  3. Actualice los paquetes del nuevo proyecto a la última versión para que coincidan con las versiones de los paquetes de la solución del proyecto anterior.
  4. Abra el explorador de archivos y navegue a la carpeta de paquetes en la nueva solución que creó
  5. Copie todo el contenido de la carpeta Packagesseleccionando todo, tenga en cuenta que NO copie la carpeta de Paquetes en sí, solo el contenido dentro de la carpeta
  6. Péguelo en su solución anterior (solución con los paquetes que faltan), en la Packagescarpeta con sobrescribir los elementos existentes.
  7. Vaya a la carpeta de paquetes en el explorador de soluciones y expándalo, luego haga clic en el botón Actualizar para ver que muchos de los paquetes faltantes ahora se muestran sin el triángulo amarillo.
  8. Por último, terminará con un par de paquetes faltantes, que no se incluyen de forma predeterminada cuando crea una nueva solución, debe eliminarlos de su archivo packages.config (el archivo que lee los administradores de paquetes nuget) para determinar los paquetes instalados, y instálelos como nuevos usando el administrador de paquetes nuget.

Tenga en cuenta que estos problemas relacionados con archivos faltantes de proyectos siempre son difíciles de solucionar y dependen de la experiencia del desarrollador, por lo que no espere una solución fácil para este.

Sobre la causa del error, Microsoft dice que es un error, pero puede ocurrir en cualquier versión de Visual Studio.


1
Con respecto a los proyectos, reiniciar Visual Studio (2019) pareció solucionarlo para mí.
Steve Smith

no hay paquetes.coinfig
pabrams

7

Solo con fines de documentación para personas nuevas con este problema, intente esto y me recordará: D

Si va a: Herramientas> Administrador de NuGet> Configuraciones. y ha marcado "Permitir nuget ...." y "comprobar automáticamente ....".

Lo único que tiene que hacer es hacer clic en el botón "Borrar todos los cachés NuGet"

Eso es todo, no tienes que editar los pensamientos manuales que pueden ser peligrosos, créeme, solía tener que hacer algunos de los pasos que se describen aquí mucho tiempo, y probar más de 5 pasos de la documentación oficial de microsoft para ese problema puede verificarlo aquí: https://docs.microsoft.com/es-es/nuget/consume-packages/package-restore#restore-packages-automatically-using-visual-studio

Pero solo limpiar la caché resuelve todos los problemas


Esto debería votarse más arriba en la cadena de respuestas ..
GregD

7

Si tiene el icono de advertencia pero no hay advertencias y nada parece estar realmente mal, haga clic con el botón derecho en el proyecto> Descargar proyecto> haga clic con el botón derecho en el proyecto nuevamente> Recargar proyecto. El icono apareció por un momento y luego se borró para mí en Visual Studio 2019. Esto evita un reinicio completo de Visual Studio.


2

Curiosamente, mi proyecto .Net Core 3 necesitaba que simplemente hiciera clic en "Cargar dependencias del proyecto" desde el contexto del proyecto, luego el icono de advertencia desapareció.

Captura de pantalla útil:

ingrese la descripción de la imagen aquí


1

Acabo de actualizar Visual Studio a 16.4.4 y el problema se resolvió. La referencia es fija y no más triángulo amarillo. Gracias.


1

Enfrenté este error cuando cloné el proyecto. la razón principal fue que los paquetes de Nuget no se pudieron restaurar y encuentro una solución haciendo que nuget.org sea el único recurso activo.

ingrese la descripción de la imagen aquí

Asegúrese de seleccionar Nuget.org como único recurso activo.

Espero eso ayude


1

El signo de exclamación amarillo generalmente se debe a que falta una referencia o una dll no compatible. Si clona un repositorio, es posible que muchos de los paquetes de nugget muestren una exclamación amarilla. Si ha verificado que la versión del proyecto es correcta y el problema persiste, puede probar la siguiente solución.

En la consola del administrador de paquetes, seleccione el proyecto en el que se enfrenta a este problema y luego escriba el siguiente comando.

Update-Package -Reinstall

Esto obligará a reinstalar todos los paquetes. Este comando no actualizará la versión de los paquetes NuGet, simplemente forzará la reinstalación.

Esta solución funcionó en mi caso. Estoy usando VS2019. Espero que esto ayude a otros también.


0

Podría haber 1 paquete que puede hacer que no se carguen todos los demás. intente comentar los paquetes de .csproj uno por uno y descubra cuál es el problema para reducirlo.


0

Si trato de desinstalar Microsoft.NETCore.Platformscomo se indica en la respuesta marcada, aparece el siguiente error:

No se puede desinstalar 'Microsoft.NETCore.Platforms.1.1.0' porque 'NETStandard.Library.2.0.3' depende de él.

Desinstalé los otros paquetes, pero sigo recibiendo el NETSDK1023error:

Se incluyó una PackageReference para 'NETStandard.Library' en su proyecto. El SDK de .NET hace referencia implícitamente a este paquete y normalmente no es necesario hacer referencia a él desde su proyecto. Para obtener más información, consulte https://aka.ms/sdkimplicitrefs

Ahora edité mi .csproj y eliminé la siguiente parte

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

como se indica en https://aka.ms/sdkimplicitrefs en Recomendaciones :

Cuando apunte a .NET Core o .NET Standard, nunca haga una referencia explícita a los metapaquetes Microsoft.NETCore.Appo a NETStandard.Librarytravés de un <PackageReference>elemento en su archivo de proyecto.

¡Ahora la advertencia se ha ido!


0

Ninguno de los anteriores funcionó para mí. Tenía un proyecto en la solución con triángulos de advertencia en las dependencias de otros proyectos en la solución que causaron muchos errores rojos en VS. Sin embargo, compilaría, ejecutaría y depuraría muy bien. Finalmente descargué el proyecto con un clic derecho en el nombre del proyecto en el árbol de la solución, y luego volví a cargar el proyecto y todo está feliz ahora. Gracias Visual Studio, smh. Estoy usando VS 2019 16.7.1


0

Reiniciar la máquina

Creo que mi situación era que algún proceso no liberaba ciertas DLL después de un vaciado de caché y luego fallaba cualquier adquisición de DLL debido a ese bloqueo (?).

Al reiniciar mi máquina y hacerlo, donet restoreresolvió el problema y pude compilar nuevamente sin el error del paquete faltante.


-4

Si no hay ningún problema con usted, actualice todos los paquetes NuGet que pueden resolver este problema.

Menú Herramientas -> Administrador de paquetes NuGet -> Administrar paquetes Nuget para la solución . Cuando aparezca este menú, haga clic en la pestaña Actualizar y haga clic en el botón Actualizar todo .


5
¿No actualizaría eso todos los paquetes a la última versión? Esto puede no ser deseable si se requiere una versión específica (no más reciente) de uno o más paquetes.
Gertsen

Si ya está utilizando los últimos paquetes, esta es una excelente solución. Solucionado mi problema de inmediato.
n4rzul

1
Ésta no es siempre la solución. A veces, hay paquetes dentro del proyecto que no deben actualizarse.
caras
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.