Solución de errores de restauración de paquetes

Este artículo se centra en los errores habituales al restaurar paquetes y los pasos necesarios para resolverlos.

La restauración de paquetes intenta instalar todas las dependencias de paquete en el estado correcto que coincida con las referencias del paquete en el archivo de proyecto ( .csproj) o el archivo packages.config. (En Visual Studio, las referencias aparecen en Explorador de soluciones en el nodoDependencias \ NuGet o Referencias). Para seguir los pasos necesarios para restaurar paquetes, consulte Restauración de paquetes. Si las referencias del paquete en el archivo de proyecto ( .csproj) o el archivo packages.config son incorrectos (no coinciden con el estado deseado después de la restauración de paquetes), debe instalar o actualizar los paquetes en lugar de usar la restauración de los mismos.

Si estas instrucciones no le ayudan, registre un problema en GitHub para que podamos examinar más detenidamente el escenario. No use el control "¿Le resultó útil esta página?" que puede aparecer en esta página, ya que no nos permite ponernos en contacto con usted para pedir más detalles.

Solución rápida para usuarios de Visual Studio

Si está usando Visual Studio, primero habilite la restauración del paquete como se indica aquí. En caso contrario, siga con las secciones siguientes.

  1. Seleccione el comando de menú Herramientas > Administrador de paquetes NuGet > Configuración del Administrador de paquetes.
  2. Establezca ambas opciones en Restauración de paquetes.
  3. Seleccione Aceptar.
  4. Vuelva a compilar el proyecto.

Enable NuGet package restore in Tool/Options

Esta configuración también puede cambiarse en el archivo NuGet.Config; vea la sección Consentimiento. Si el proyecto es uno anterior que usa la restauración de paquetes integrada de MSBuild, puede que tenga que migrar a la restauración automática de paquetes.

Este proyecto hace referencia a los paquetes NuGet que faltan en este equipo.

Mensaje de error completo:

This project references NuGet package(s) that are missing on this computer.
Use NuGet Package Restore to download them. The missing file is {name}.

Este error se produce cuando se intenta compilar un proyecto que contiene referencias a uno o varios paquetes NuGet, pero estos paquetes no están actualmente instalados en el equipo ni en el proyecto.

  • Cuando se usa el formato de administración PackageReference, este error puede deberse a una migración de packages.config a PackageReference y se debe quitar manualmente del archivo del proyecto.
  • Cuando se usa packages.config, el error indica que el paquete no está instalado en la carpeta packages en la raíz de la solución.

Esta situación se suele producir cuando obtiene el código fuente del proyecto del control de código fuente u otra descarga. Los paquetes se suelen omitir desde el control de código fuente o las descargas porque se pueden restaurar desde fuentes de paquete como nuget.org (vea Omitir paquetes de NuGet en sistemas de control de código fuente). Si se incluyen, se provocaría el sobredimensionamiento del repositorio o se crearían archivos .zip innecesariamente grandes.

El error también se puede producir si el archivo de proyecto contiene rutas de acceso absolutas a ubicaciones de los paquetes y usted mueve el proyecto.

Use uno de estos métodos para restaurar los paquetes:

Después de una restauración correcta, el paquete debe estar presente en la carpeta global-packages. Para los proyectos con PackageReference, debe volverse a crear el archivo obj/project.assets.json; para los proyectos con packages.config, el paquete debe aparecer en la carpeta packages del proyecto . Ahora el proyecto debería compilarse correctamente. Si no es así, registre un problema en GitHub para que podamos realizar un seguimiento.

Archivo de activos project.assets.json no encontrado

Mensaje de error completo:

Assets file '<path>\project.assets.json' not found. Run a NuGet package restore to generate this file.

El archivo project.assets.json mantiene un gráfico de dependencias del proyecto cuando se usa el formato de administración PackageReference, que sirve para asegurarse de que todos los paquetes necesarios están instalados en el equipo. Dado que este archivo se genera dinámicamente a través de la restauración del paquete, no suele agregarse al control de código fuente. Por consiguiente, este error se produce al crear un proyecto con una herramienta como msbuild que no restaura automáticamente paquetes.

En este caso, ejecute msbuild -t:restore seguido de msbuild, o use dotnet build (que restaurará los paquetes automáticamente). También puede usar cualquiera de los métodos de restauración de paquetes de la sección anterior.

Mensaje de error completo:

One or more NuGet packages need to be restored but couldn't be because consent has
not been granted. To give consent, open the Visual Studio Options dialog, click on
the NuGet Package Manager node and check 'Allow NuGet to download missing packages
during build.' You can also give consent by setting the environment variable
'EnableNuGetPackageRestore' to 'true'. Missing packages: {name}

Este error indica que la restauración del paquete está deshabilitada en la configuración de NuGet.

Puede cambiar la configuración aplicable en Visual Studio como se describió antes en Solución rápida para usuarios de Visual Studio.

También puede editar estos valores directamente en el archivo nuget.config aplicable (normalmente %AppData%\NuGet\NuGet.Config en Windows y ~/.nuget/NuGet/NuGet.Config en Mac/Linux). Asegúrese de que las claves enabled y automatic en packageRestore están establecidas en True:

<!-- Package restore is enabled -->
<configuration>
    <packageRestore>
        <add key="enabled" value="True" />
        <add key="automatic" value="True" />
    </packageRestore>
</configuration>

Importante

Si edita el valor packageRestore directamente en nuget.config, debe reiniciar Visual Studio para que el cuadro de diálogo de opciones muestre los valores actuales.

Otras condiciones posibles

  • Pueden producirse errores de compilación debido a que faltan archivos, con un mensaje que indica que use la restauración de NuGet para descargarlos. Sin embargo, la ejecución de una restauración podría producir un mensaje del tipo "Todos los paquetes ya están instalados y no hay nada que restaurar". En este caso, elimine la carpeta packages (al usar packages.config) o el archivo obj/project.assets.json (cuando use PackageReference) y vuelva a ejecutar la restauración. Si el error persiste, utilice nuget locals all -clear o dotnet nuget locals all --clear desde la línea de comandos para borrar las carpetas global-packages y de memoria caché, tal y como se describe en Administración de paquetes globales y carpetas de caché.

  • Al obtener un proyecto de control de código fuente, las carpetas de proyecto pueden establecerse en solo lectura. Cambie los permisos de carpeta e intente restaurar los paquetes otra vez.

  • Puede usar una versión anterior de NuGet. Eche un vistazo a nuget.org/downloads para conseguir las versiones más recientes recomendadas. Para Visual Studio 2015, se recomienda 3.6.0.

Si tiene otros problemas, registre un problema en GitHub para que podamos pedirle más detalles.