No se encontró el archivo de activos project.assets.json. Ejecute una restauración del paquete NuGet

261

Estoy tratando de usar nopCommerce (que está escrito en .NET Core) pero cuando quiero ejecutar el proyecto me enfrento a 52 errores que me dicen Ejecutar una restauración de paquete nuget

Archivo de activos ~ \ obj \ project. assets.json ' no encontrado. Ejecute una restauración del paquete NuGet para generar este archivo. Nop.Web.MVC.Testsote

cuando uso el botón derecho sobre la solución y selecciono Restaurar paquetes Nuget, aparece este mensaje:

Todos los paquetes ya están instalados y no hay nada que restaurar.

pero esos 52 errores todavía están allí y en Herramientas -> Administrador de paquetes NuGet -> Administrar paquetes NuGet para la solución no hay nada instalado en la solución, también actualicé recientemente mi VS2017 a 15.5.4

Nunca confíes
fuente
¿Has dado tu consentimiento para que NuGet se restaure? Vaya a herramientas, opciones, busque NuGet y marque la opción "Permitir NuGet ...".
imps
Si alguien está en una Mac, tuvimos este problema y lo solucionamos eliminando espacios en la ruta del repositorio (que se creó durante la extracción de git): My% 20Project se convierte en MyProject.
David Hague

Respuestas:

458

Para corregir este error desde Herramientas> Administrador de paquetes NuGet> Consola del Administrador de paquetes simplemente ejecute:

dotnet restore

El error se produce porque el dotnet cli no crea todos los archivos necesarios inicialmente. Hacer restauración dotnet agrega los archivos necesarios.

Mostafa Bouzari
fuente
21
Esta fue también la solución para el servidor de compilación. Se agregó un paso en la línea de comandos para ejecutar "restauración dotnet" después de la restauración normal de NuGet.
Marcar el
24
También puede hacerlo desde MSBuild: msbuild MySolution.sln / t: Restore
Der_Meister
3
La solución de @ Der_Meister para agregar la opción / t: Restaurar funcionó para mí, sin embargo, tuve que compilar la solución dos veces (dos pasos de compilación separados). Primero con la opción / t: Restaurar y luego nuevamente sin ella.
Michael
16
@Michael, intente msbuild MySolution.sln / t: Restore; Build
Der_Meister el
8
Si tiene más de un archivo de solución, debe hacerlodotnet restore solutionfilename.sln
ECH
97

En mi caso, el error fue el repositorio GIT. Tenía espacios en el nombre, por lo que mi proyecto no pudo restaurar

Si este es su problema, simplemente cambie el nombre del repositorio GIT cuando clone

git clone http://Your%20Project%20With%20Spaces newprojectname
Sebastian Castaldi
fuente
66
Pensé para mí mismo que esto no podría ser. Después de intentar durante otra hora otras soluciones propuestas, finalmente lo intenté por desesperación y resolvió mi problema. ¡Maldita sea hombre!
Stark
2
Esto solucionó el problema que estaba teniendo, ¡muchas gracias!
Sharbel
3
Esta respuesta debe estar al principio de la publicación, no al final. Resuelto mi problema
CodeWarrior
2
¡Salvaste mi día! Gracias.
mpatel
3
en mi caso, simplemente cambié el nombre de mi carpeta física al eliminar% 20 y reemplazarla con espacio normal y todo funciona bien
hosam hemaily
42

En caso de que 'dotnet restore' no funcione, los siguientes pasos pueden ayudar:

  1. Visual Studio >> Herramientas >> Opciones >> Nuget Manager >> Fuentes de paquetes
  2. Desmarcó las fuentes de paquetes de terceros.
  3. Reconstruir solución.
prisma
fuente
3
Recientemente encontré este problema para el Servidor de Identidad Inicio Rápido # 1: Asegurar una API usando Credenciales de Cliente y la solución anterior funcionó para mí.
Tharindu Jayasinghe
¡Gracias! De hecho, eliminé una fuente que ya no era relevante (de otra solución) y en las fuentes nuget.org y MSVS Offline Packages hice clic en el botón Actualizar . Después de esto dotnet restorefuncionó.
CPHPython
Gracias, eso fue todo!
tdracz
33

Cerrar y volver a abrir Visual Studio resolvió este problema para mí, una vez que me aseguré de que los paquetes NuGet se habían restaurado según otras respuestas publicadas aquí.

Factura pendiente
fuente
No puedo creer que esto también funcionó para mí después de hacer la restauración dotnet y solo después de esto
Gaspa79
Tuve algunos problemas de conectividad por separado en mi LAN de trabajo que fueron inhibidores para NuGet. ¡Reiniciar mi PC resolvió el problema!
Neo
Esto no es realmente una respuesta, porque a veces se utilizan herramientas de la CLI para gety buildy no lo hace VS. abierto Sé por qué funciona con VS, porque VS resuelve automáticamente las dependencias del proyecto.
TS
@TS la pregunta está etiquetada con "Visual Studio 2017", por lo que diría que esta es una respuesta. Sin embargo, plantea un punto interesante: el problema radica en que VS resuelve las dependencias. Si tiene más información sobre lo que está sucediendo, estoy seguro de que sería una lectura interesante:)
OutstandingBill
+1. ¡Me atrapaste! Con VS, bueno. Su versión 15.5 tenía errores. Creo que 15.5 / 15.6 tenía muchos problemas para la resolución de referencia. Ahora, aquí está la respuesta stackoverflow.com/a/58548856/1704458
TS
20

Para aquellos con el mismo problema que yo en el entorno Azure DevOps / VSTS que encuentran un mensaje similar: C:\Program Files\dotnet\sdk\2.2.104\Sdks\Microsoft.NET.Sdk\targets\Microsoft.PackageDependencyResolution.targets(208,5): Error NETSDK1004: Assets file '...\obj\project.assets.json' not found. Run a NuGet package restore to generate this file

Agregue /t:Restorea sus argumentos de MSBuild en Build Solution.

taylorswiftfan
fuente
9

Para mí cuando lo hice, el error de restauración de dotnet todavía estaba ocurriendo.

fui a

1 Herramienta -> NuGet Package Maneger -> Configuración del Administrador de paquetes -> haga clic en "Borrar en Nuget Catche (s)"

2 restauración dotnet

Problemas resueltos.

Velocidad
fuente
Voy a intentar esto la próxima vez que suceda. Podría ser un mejor enfoque que el mío (cerrar y volver a abrir VS), que generalmente me lleva mucho tiempo .
OutstandingBill
6

En Visual Studio 2017, siga los siguientes pasos:

1) seleccione Herramienta => Opciones => Administrador de paquetes NuGet => Fuentes de paquetes y luego desmarque Opción de paquetes fuera de línea de Microsoft Visual Studio . ingrese la descripción de la imagen aquí

2) ahora abra Tool => NuGet Package Maneger => Package Manager Console. 3) ejecutar comando en PM> restauración dotnet.

Espero que funcione ...

Manoj Gupta
fuente
6

Para mí, actualicé NuGet.exe de 3.4 a 4.9 porque 3.4 no entiende cómo restaurar paquetes para .NET Core.

Para obtener más información, consulte la restauración dotnet frente a la restauración nuget con teamcity

usuario8128167
fuente
Sí, encontré esto cuando comenzamos a migrar viejos proyectos de .Net Framework al nuevo .csprojformato de proyecto.
StuartLC
5

Seleccione Herramientas > NuGet Package Manager > Consola de Package Manager

Y luego ejecutar:

dotnet restore <project or solution name>
Andre Mesquita
fuente
3

un poco tarde a la respuesta, pero parece que esto agregará valor. Mirando el error, parece ocurrir en la canalización de CI / CD.

Simplemente ejecutando "dotnet build" será suficiente.

construcción dotnet

dotnet build ejecuta la "restauración" de forma predeterminada.

Sunny Sharma
fuente
1
También se puede lograr agregando el paso ".NET core" a la canalización (antes de la compilación) y seleccionando el comando "restauración dotnet" del menú desplegable. Estoy hablando específicamente sobre la tubería VSTS aquí.
Lech Osiński
3

Nada de lo anterior funcionó para mí. Pero simplemente eliminar todas las carpetas 'bin' y 'obj' fue el truco.

alexbk66
fuente
Este problema me sucedió cuando trabajé en un Dockerfile. eliminar esas carpetas hizo que la restauración dotnet en el contenedor funcionara correctamente.
Johannes
3

Resuelto agregando / t: Restaurar; Construir a MSBuild Argumentos

Abdulsamet İLERİ
fuente
2

Cuando use VSTS, verifique su archivo global.json. Había ingresado a la versión SDK como "2.2", lo que causó un error de análisis (pero no al compilar localmente). Añadiendo la versión completa, "2.2.104" resolvió el problema.

Rob Minnis
fuente
2

Perdí varias horas por este error en Azure DevOps cuando configuré la tarea 'Visual Studio Build' en una canalización de compilación para compilar un proyecto individual en mi solución, en lugar de la solución completa.

Hacer eso significa que DevOps no construye ninguno (o posiblemente algunos, no estoy seguro de cuál) de los proyectos a los que hace referencia el proyecto al que se ha dirigido para la compilación, y por lo tanto, esos proyectos no tendrán su project.json .asset archivos generados, que luego causa este problema.

La solución para mí fue cambiar de usar la tarea VS Build a la tarea MSBuild. El uso de la tarea MSBuild para un proyecto individual compila correctamente los proyectos a los que hace referencia el proyecto que está creando y elimina este error.

tomRedox
fuente
1

Si simplemente restaurar paquetes NuGet no funciona, asegúrese de que en Herramientas -> Opciones -> Administrador de paquetes NuGet -> General en Restauración de paquetes paquetes, esté marcada la casilla "Permitir que NuGet descargue paquetes faltantes".

Luego restaure nuevamente los paquetes NuGet O simplemente RECONSTRUYA después de eliminar las carpetas obj y bin.

NexX
fuente
1

Si la sugerencia de @ mostafa-bouzari no ayuda, revise cuidadosamente en las ventanas 'Lista de errores' o 'Salida' para ver por qué NuGet no puede restaurar, por ejemplo, debido a un problema de red si está detrás del proxy.

flam3
fuente
En mi caso, Nuget Restore no pudo conectarse a nuestro repositorio privado NuGet, porque no estaba conectado a la VPN de la compañía. Verificación de los registros de la consola del Administrador de paquetes ayudó.
Alexander Puchkov
1

Este problema ocurre cuando su herramienta de compilación no está configurada para hacer restoreen proyectos configurados para usar PackageReferencevspackages.config y afecta principalmente a proyectos de nuevo estilo Net Core y Netstandard.

Cuando abre Visual Studio y compila, lo resuelve por usted. Pero si usa la automatización, las herramientas de CLI, verá este problema.

Aquí se ofrecen muchas soluciones. Pero todo lo que necesitas recordar, debes forzar restore. En algunos casos, utiliza dotnet restoreantes de la compilación. Si compila usando MsBuild, simplemente agregue el /t:Restoreinterruptor a su comando.

En pocas palabras, debe ver por qué no se puede activar la restauración. Fuente de nuget incorrecta o acción de restauración faltante, o nuget.exe desactualizado, o todo lo anterior.

TS
fuente
1

Muy rara experiencia que he encontrado!

Había clonado con GIT bash y GIT cmd-Line anteriormente, encontré los problemas anteriores.

Más tarde, cloné con Tortoise-GIT y todo funcionó como se esperaba.

Puede ser una respuesta loca, ¡pero intentarlo una vez puede ahorrarle tiempo!

Bikram
fuente
1

Visto esto después de agregar un proyecto WinForms Core 3.1 (de plantillas de proyecto) en VS-2019 vs 16.4.0 e intentar ejecutarlo de fábrica. Limpiar o reconstruir toda la solución no funcionó.

Acabo de volver a cargar mi solución ... que es File / Close Solution y luego volver a abrirla y reconstruirla resolvió el problema.

Golosinas
fuente
1

Si este error ocurre como parte de una compilación en Azure DevOps (TFS) y su compilación ya tiene una tarea de restauración de NuGet , este error puede indicar que la tarea de restauración de NuGet no pudo restaurar todos los paquetes, especialmente si usa un origen de paquete personalizado ( como un servidor NuGet interno). Agregar /t:Restore;Builda los argumentos de MSBuild parece ser una forma de resolver el error, pero esto le pide a MSBuild que realice una operación de restauración NuGet adicional. Creo que esto tiene éxito porque MSBuild usa el origen del paquete personalizado configurado en Visual Studio. Una solución preferible es arreglar la tarea de restauración de NuGet.

Para configurar un origen de paquete personalizado para la tarea de restauración de NuGet:

  1. Cree un NuGet.configarchivo que enumere todas las fuentes de paquetes (paquetes sin conexión de Microsoft Visual Studio, nuget.org y su fuente de paquete personalizada) y agréguelo al control de fuente.
  2. En la tarea de restauración de Nuget en Feeds para usar: seleccione la opción Feeds en mi NuGet.config .
  3. Proporcionar el camino a NuGet.config.
  4. Elimine la /t:Restore;Buildopción de la tarea MSBuild.

Información adicional está disponible aquí .

Jeremiah Mercier
fuente
0

Recibí el error cuando creé un lambda en dot net core en VS2017. Lo que funcionó para mí fue descargar el proyecto y volver a cargarlo.

boms
fuente
0

ejecute su VS como administrador después de eso en la consola del administrador de paquetes ejecute dotnet restore.

Lucas Brito
fuente
0

Otro, si por casualidad está usando Dropbox, Conflictedbusque los nombres de los archivos, realice una búsqueda en su repositorio y elimine todos esos archivos en conflicto.

Esto puede haber sucedido si ha movido los archivos.

Jose A
fuente
0

Causa de este defecto: debe eliminar el Nuget inyectado en el explorador de archivos. Solución: una vez que elimine ese Nuget en su sistema, elimínelo de la siguiente ubicación. seleccione Herramienta => Opciones => Administrador de paquetes NuGet => Fuentes de paquetes y luego desmarque la opción Paquetes de Microsoft Visual Studio sin conexión

balaji m
fuente
0

En mi caso tuve un problema con las fuentes de paquetes disponibles. Había movido la carpeta del repositorio local de Nuget a una nueva ruta, pero no la actualicé en las fuentes de paquetes disponibles de Nuget. Cuando haya corregido el problema de la ruta, actualícelo en los orígenes de paquetes disponibles y después de eso todo (nuget restor, etc.) funcionaba bien.

usuario11990436
fuente
0

Para mí resultó ser un problema de credenciales de fuente nuget. Recientemente había cambiado mi contraseña para acceder a un servidor nexus y Visual Studio todavía estaba usando la contraseña anterior al intentar acceder a un nuget en ese servidor a través del administrador de credenciales de Windows. Para solucionarlo, tuve que eliminar la entrada de esas credenciales obsoletas en el administrador de credenciales y después, cuando hice una restauración nuget, me solicitó una contraseña que me permitía ingresar la nueva contraseña, que se guardó nuevamente en el administrador de credenciales. Puede acceder al administrador de credenciales desde la línea cmd usando CmdKey.exe.

John Volkya
fuente
0

Prueba esto (funcionó para mí):

  • Ejecute VS como administrador
  • Actualización manual de NuGet a la versión más reciente
  • Elimine todos los archivos bin y obj en el proyecto.
  • Reiniciar VS
  • Recompilar
Dalfonsop
fuente
0

Puede ir a: Herramientas> Administrador de paquetes NuGet> Consola del Administrador de paquetes

Y luego ejecutar:

restauración dotnet

Siete
fuente