¿Cómo activo NuGet Package Restore en Visual Studio?

273

Hay una publicación similar en la pila, pero no ayuda con mi problema, posiblemente porque estoy usando Visual Studio 2015.

¿Cómo obtengo la opción "Habilitar restauración de paquete NuGet" para que aparezca en VS2015?

Elegí Archivo> Nuevo proyecto y creé una aplicación web ASP.NET vacía . Estoy buscando esta opción de menú.

ingrese la descripción de la imagen aquí

Debo mencionar que he buscado archivos nuGet preexistentes en mi carpeta de proyecto y no hay ninguno.

Dan Beaulieu
fuente
44
Asegúrese de probar esto en contra de su Solución y no del proyecto web. Por defecto, la solución no se muestra cuando solo hay un proyecto
JConstantine
1
Sí, definitivamente es un error fácil de cometer, pero me aseguré de verificar la solución, creo que puede estar relacionado con 2015. La opción Habilitar está disponible en VS2013 cuando sigo los mismos pasos.
Dan Beaulieu
2
Igual que aquí. Incluso intenté eliminar la carpeta .nuget que reactiva la opción Habilitar la restauración del paquete NuGet en VS 2013 pero todavía no hay dados. Estoy tratando de abrir una aplicación MVC existente que se creó en VS 2013.
Vinney Kelly
44
@justanotherdev Sería útil si proporcionara una referencia al nuevo flujo de trabajo para que su comentario sea un poco más productivo.
avantprime
1
No vi el artículo de David Ebbo referenciado por oligofren, así que simplemente abrí los archivos sln & csproj en Notepad ++ y eliminé las secciones que ilustró. Tenía la solución abierta en VS2015 y, una vez que guardé los archivos, VS me pidió que los volviera a cargar y mis referencias de solución ahora están bien y mi solución se compila. Muchas gracias, Vinney!
Rich Ward

Respuestas:

248

Me llevó demasiado tiempo, pero finalmente encontré este documento sobre Migración de soluciones integradas de MSBuild a Restauración automática de paquetes y pude resolver el problema utilizando los métodos descritos aquí.

  1. Elimine el '.nuget'directorio de la solución de la solución.
  2. Elimine todas las referencias a nuget.targetsde .csprojo sus .vbprojarchivos. Aunque no se admite oficialmente, el documento se vincula a un script de PowerShell si tiene muchos proyectos que deben limpiarse. Edité manualmente el mío a mano para que no pueda dar ningún comentario sobre mi experiencia con él.

Cuando edite sus archivos a mano, esto es lo que estará buscando:

Archivo de solución (.sln)

Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = ".nuget", ".nuget", "{F4AEBB8B-A367-424E-8B14-F611C9667A85}"
ProjectSection(SolutionItems) = preProject
    .nuget\NuGet.Config = .nuget\NuGet.Config
    .nuget\NuGet.exe = .nuget\NuGet.exe
    .nuget\NuGet.targets = .nuget\NuGet.targets
EndProjectSection
EndProject

Archivo de proyecto (.csproj / .vbproj)

  <Import Project="$(SolutionDir)\.nuget\NuGet.targets" Condition="Exists('$(SolutionDir)\.nuget\NuGet.targets')" />
  <Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
    <PropertyGroup>
      <ErrorText>This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them.  For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
    </PropertyGroup>
    <Error Condition="!Exists('$(SolutionDir)\.nuget\NuGet.targets')" Text="$([System.String]::Format('$(ErrorText)', '$(SolutionDir)\.nuget\NuGet.targets'))" />
  </Target>
Vinney Kelly
fuente
3
Me estoy perdiendo algo por completo aquí. Cuando uso este método, obtengo una gran cantidad de paquetes instalados en cada solución que tengo. Tengo una solución con 10 paquetes y otra solución con exactamente los mismos paquetes: se crean dos directorios diferentes, cada uno con los 10 paquetes. Con este método, ¿cómo consolida todos sus paquetes en un solo directorio (como permite el antiguo método VS2013 editando el archivo NuGet.Config)?
Quarkly
¿No ves una carpeta .nuget? Ve a ver las soluciones sobre cómo eliminar carpetas en la carpeta de paquetes. Es posible que su paquete esté medio restaurado, y esa basura está bloqueando su restauración por completo.
Greg
De hecho, esta fue la solución. Además de esto: agregué "nuget restore" antes de comenzar a construir el proyecto. los paquetes nuget se descargan automáticamente y la compilación del proyecto funciona bien después de esto.
TarmoPikaro
55
Para ahorrar un poco de tiempo, el script que se ejecutará desde el repositorio de GitHub mencionado por @VinneyKelly es migrateToAutomaticPackageRestore.ps1, ¡su magia funciona!
Riga
60

Microsoft ha dejado de admitir la opción "Habilitar restauración de paquetes NuGet" en VS2015 y debe realizar algunos cambios manuales para migrar soluciones antiguas o agregar la función a soluciones nuevas. La nueva característica se describe bastante bien en NuGet Package Restore .

También hay una guía de migración para proyectos existentes (como se mencionó anteriormente) aquí: Guía de migración de NuGet

Al actualizar:

  1. no elimine el directorio .nuget.
  2. Elimine los archivos nuget.exe y nuget.targets.
  3. Deje el nuget.config.
  4. Purgue cada uno de los archivos del proyecto de cualquier referencia a los objetivos NuGet a mano. El script de Powershell mencionado parecía hacer más daño que bien.

Al crear un nuevo proyecto:

  1. En su solución de Visual Studio 2015, cree un Directorio de soluciones llamado .nuget.
  2. Cree un directorio real del directorio de la solución (donde vive el archivo .sln) y llámelo .nuget (tenga en cuenta que el directorio de la solución no es el mismo que el directorio del sistema de archivos real aunque tengan el mismo nombre).
  3. Cree un archivo en el directorio .nuget llamado nuget.config.

  4. Agregue 'nuget.config' al directorio de la solución creado en el paso 2.

  5. Coloque el siguiente texto en el archivo nuget.config:

    <?xml version="1.0" encoding="utf-8"?> <configuration> <config> <add key="repositorypath" value="$\..\..\..\..\Packages" /> </config> <solution> <add key="disableSourceControlIntegration" value="true" /> </solution> </configuration>

Este archivo de configuración le permitirá consolidar todos sus paquetes en un solo lugar para que no tenga 20 copias diferentes del mismo paquete flotando en su sistema de archivos. La ruta relativa cambiará según la arquitectura del directorio de su solución, pero debe apuntar a un directorio común a todas sus soluciones.

Debe reiniciar Visual Studio después de realizar el paso 5. Nuget no reconocerá los cambios hasta que lo haga.

Finalmente, puede que tenga que usar el 'Administrador de paquetes Nuget para soluciones' para desinstalar y luego reinstalar los paquetes. No sé si esto fue un efecto secundario del script Powershell que ejecuté o simplemente un método para volver a poner en marcha a NuGet. Una vez que hice todos estos pasos, mi arquitectura de compilación complicada funcionó a la perfección para traer nuevos paquetes cuando verifiqué proyectos de TFVC.

Quarkly
fuente
1
¿Por qué eliminar el archivo nuget.targets? ¿Obtendré una compilación coherente cuando falta?
Frode Nilsen
1
Los objetivos parecen estar integrados en el IDE ahora, así como la función que solía proporcionar el 'nugget.exe'. Lo único que aún necesita es la configuración.
Quarkly
1
Además de los pasos mencionados por DRAirey, tuve que hacer lo siguiente: 1) En lugar de $ \ .. \ .. \ .. \ .. \ Packages, utilizado ../../ (convención de ruta principal de Windows, no $ al inicio 2) Guarde la solución, cierre y vuelva a abrir para que nuget.config sea leído y honrado por la instalación del paquete
Sudhanshu Mishra
Esto ayudó para mi nuevo proyecto VS2015 donde comité paquetes dir y otros miembros del equipo no pudieron reconstruir debido a las dependencias de NuGet.
azec-pdx
1
Debe reiniciar Visual Studio después de realizar el paso 5. Nuget no reconocerá los cambios hasta que lo haga.
Barry Colebank Jr
35

Opcionalmente, puede eliminar todas las carpetas de la carpeta "paquetes" y seleccionar "Administrar paquetes NuGet para la solución ...". En este caso, el botón "Restaurar" aparece en Windows NuGet Packages.

Ivan Branets
fuente
1
Intente cerrar y volver a abrir la ventana de paquetes NuGet después de eliminar las carpetas dentro de la carpeta "paquetes".
Ivan Branets
66
+1 Esto funcionó para mí, tenga en cuenta que el botón de restauración aparece en la parte superior de la ventana, justo debajo de la pestaña. Dice: "Faltan algunos paquetes NuGet en esta solución. Haga clic para restaurar desde sus fuentes de paquetes en línea".
Eruza
Tan simple y fácil ... esto funcionó para mí ... Supongo que esta debería ser la respuesta más votada :)
Nirman
Tan simple y fácil. Esta debería ser la respuesta.
Axel
¿No sería una buena idea agregar esta carpeta al archivo .gitignore?
Axel
26

Como ya mencionó Mike, no existe la opción 'Habilitar restauración de paquete NuGet' en VS2015. Tendrá que invocar el proceso de restauración manualmente. Una manera agradable, sin jugar con archivos y directorios, es usar la consola de administración de paquetes NuGet : haga clic en el campo 'Inicio rápido' (generalmente en la esquina superior derecha), ingrese console, abra la consola de administración e ingrese el comando:

Update-Package reinstall

Esto reinstalará todos los paquetes de todos los proyectos en su solución. Para especificar un solo proyecto, ingrese:

Update-Package reinstall -ProjectName MyProject

Por supuesto, esto solo es necesario cuando el Restorebotón, a veces ofrecido por VS2015, no está disponible. Más comandos útiles de actualización se enumeran y explican aquí: https://docs.microsoft.com/en-us/nuget/consume-packages/reinstalling-and-updating-packages

Jack Miller
fuente
Muchas gracias, tuve el problema similar. Acabo de resolver mi problema a través de su procedimiento. Muchas gracias
McElie
Lo mismo aquí, el único que funcionó y no necesita un montón de cosas escritas por todas partes
Harvey Lin
¡La respuesta más útil aquí!
Neo
13

Si tiene algún problema o le faltan paquetes, simplemente haga clic con el botón derecho en su proyecto y seleccione " Administrar paquetes NuGet para la solución ... ". Después de hacer clic en esto, se abrirá una pantalla donde verá una barra de menú que dice "Restaurar": Restaurar

Haga clic en él y los paquetes necesarios se instalarán automáticamente.
Creo que esto es lo que estás buscando, esto resolvió mis problemas.

Yenthe
fuente
3
Pero eso solo ayuda si aparece esa barra de alerta, en mi caso no.
Nicholas Petersen
2
Un paso que instala manualmente un paquete pierde por completo el punto de una restauración automatizada.
Quarkly
Creo que esta probablemente debería ser la respuesta aceptada, es la misma funcionalidad
user25064
1
Pude ver la opción de restaurar haciendo clic derecho en la solución. Estaba allí bajo "Administrar paquetes NuGet para la solución". Hizo el truco para mí.
Daryl
1
No funciona para mí: veo advertencias en la solución con respecto a la falta de paquetes nuget, pero administrar paquetes nuget no me presenta una opción para descargarlos. Tampoco puedo construir y restaurar. Además, el comando de restauración no hace nada.
Markus
7

Use este comando para restaurar todos los paquetes

dotnet restore
Abdus Salam Azad
fuente
Funciona perfectamente
JP..t
6

Al actualizar proyectos con paquetes nuget de Vx20XX a VS2015, es posible que tenga un problema con los paquetes nuget.

Ejemplo de mensaje de error: Este proyecto hace referencia a los paquetes NuGet que faltan en esta computadora. Habilite NuGet Package Restore para descargarlos.

Actualización 2016-02-06: tenía un enlace a la información pero ya no funciona. Sospecho que una ruta reciente ha resuelto el problema?

Solucioné mi problema escribiendo un pequeño programa que realiza la restauración del paquete integrado MSBuild vs. Restauración automática del paquete

Puede descargar el ejecutable de la herramienta aquí .

Por favor déjame saber el resultado :-) !

ingrese la descripción de la imagen aquí

Código como referencia:

<Window x:Class="FixNuGetProblemsInVs2015.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:FixNuGetProblemsInVs2015"
        mc:Ignorable="d"
        Title="Fix NuGet Packages problems in Visual Studio 2015 (By Eric Ouellet)" Height="350" Width="525">
    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto"></RowDefinition>
            <RowDefinition Height="Auto"></RowDefinition>
            <RowDefinition Height="*"></RowDefinition>
            <RowDefinition Height="Auto"></RowDefinition>
        </Grid.RowDefinitions>

        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="Auto"></ColumnDefinition>
            <ColumnDefinition Width="10"></ColumnDefinition>
            <ColumnDefinition></ColumnDefinition>
        </Grid.ColumnDefinitions>

        <TextBlock Grid.Row="0" Grid.Column="0">Root directory of projects</TextBlock>
        <Grid Grid.Row="0" Grid.Column="2">
            <Grid.ColumnDefinitions>
                <ColumnDefinition></ColumnDefinition>
                <ColumnDefinition Width="Auto"></ColumnDefinition>
            </Grid.ColumnDefinitions>

            <TextBox Grid.Column="0" Name="DirProjects"></TextBox>
            <Button Grid.Column="1" VerticalAlignment="Bottom" Name="BrowseDirProjects" Click="BrowseDirProjectsOnClick">Browse...</Button>
        </Grid>

        <!--<TextBlock Grid.Row="1" Grid.Column="0">Directory of NuGet Packages</TextBlock>
        <Grid Grid.Row="1" Grid.Column="2">
            <Grid.ColumnDefinitions>
                <ColumnDefinition></ColumnDefinition>
                <ColumnDefinition Width="Auto"></ColumnDefinition>
            </Grid.ColumnDefinitions>

            <TextBox Grid.Column="0" Name="DirPackages"></TextBox>
            <Button Grid.Column="1"  Name="BrowseDirPackages" Click="BrowseDirPackagesOnClick">Browse...</Button>
        </Grid>-->

        <TextBox Grid.Row="2" Grid.Column="0" Grid.ColumnSpan="3" Name="TxtLog" IsReadOnly="True"></TextBox>

        <Button Grid.Row="3" Grid.Column="0" Click="ButtonRevertOnClick">Revert back</Button>
        <Button Grid.Row="3" Grid.Column="2" Click="ButtonFixOnClick">Fix</Button>
    </Grid>
</Window>


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Forms;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using System.Xml;
using System.Xml.Linq;
using Application = System.Windows.Application;
using MessageBox = System.Windows.MessageBox;

/// <summary>
/// Applying recommanded modifications in section : "MSBuild-Integrated package restore vs. Automatic Package Restore"
/// of : http://docs.nuget.org/Consume/Package-Restore/Migrating-to-Automatic-Package-Restore
/// </summary>

namespace FixNuGetProblemsInVs2015
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();

            DirProjects.Text = @"c:\prj";
            // DirPackages.Text = @"C:\PRJ\NuGetPackages";
        }

        private void BrowseDirProjectsOnClick(object sender, RoutedEventArgs e)
        {
            FolderBrowserDialog dlg = new FolderBrowserDialog();
            dlg.SelectedPath = DirProjects.Text;
            if (dlg.ShowDialog() == System.Windows.Forms.DialogResult.OK)
            {
                DirProjects.Text = dlg.SelectedPath;
            }
        }

        //private void BrowseDirPackagesOnClick(object sender, RoutedEventArgs e)
        //{
        //  FolderBrowserDialog dlg = new FolderBrowserDialog();
        //  dlg.SelectedPath = DirPackages.Text;
        //  if (dlg.ShowDialog() == System.Windows.Forms.DialogResult.OK)
        //  {
        //      DirPackages.Text = dlg.SelectedPath;
        //  }
        //}

        // private string _dirPackages;

        private void ButtonFixOnClick(object sender, RoutedEventArgs e)
        {
            DoJob(false);
        }

        private void ButtonRevertOnClick(object sender, RoutedEventArgs e)
        {
            DoJob(true);
        }

        private void DoJob(bool revert = false)
        {
            TxtLog.Text = "";

            string dirProjects = DirProjects.Text;
            // _dirPackages = DirPackages.Text;

            if (!Directory.Exists(dirProjects))
            {
                MessageBox.Show("Projects directory does not exists: " + dirProjects);
                return;
            }

            //if (!Directory.Exists(_dirPackages))
            //{
            //  MessageBox.Show("Packages directory does not exists: " + _dirPackages);
            //  return;
            //}

            RecurseFolder(dirProjects, revert);
        }

        private void RecurseFolder(string dirProjects, bool revert = false)
        {
            if (revert)
            {
                Revert(dirProjects);
            }
            else
            {
                FixFolder(dirProjects);
            }

            foreach (string subfolder in Directory.EnumerateDirectories(dirProjects))
            {
                RecurseFolder(subfolder, revert);
            }
        }

        private const string BackupSuffix = ".fix_nuget_backup";

        private void Revert(string dirProject)
        {
            foreach (string filename in Directory.EnumerateFiles(dirProject))
            {
                if (filename.ToLower().EndsWith(BackupSuffix))
                {
                    string original = filename.Substring(0, filename.Length - BackupSuffix.Length);
                    if (File.Exists(original))
                    {
                        File.Delete(original);                                          
                    }
                    File.Move(filename, original);
                    Log("File reverted: " + filename + " ==> " + original);
                }
            }
        }

        private void FixFolder(string dirProject)
        {
            BackupFile(System.IO.Path.Combine(dirProject, "nuget.targets"));
            BackupFile(System.IO.Path.Combine(dirProject, "nuget.exe"));

            foreach (string filename in Directory.EnumerateFiles(dirProject))
            {
                if (filename.ToLower().EndsWith(".csproj"))
                {
                    FromProjectFileRemoveNugetTargets(filename);
                }
            }
        }

        private void BackupFile(string path)
        {
            if (File.Exists(path))
            {
                string backup = path + BackupSuffix;
                if (!File.Exists(backup))
                {
                    File.Move(path, backup);
                    Log("File backup: " + backup);
                }
                else
                {
                    Log("Project has already a backup: " + backup);
                }
            }
        }

        private void FromProjectFileRemoveNugetTargets(string prjFilename)
        {
            XDocument xml = XDocument.Load(prjFilename);

            List<XElement> elementsToRemove = new List<XElement>();

            foreach (XElement element in xml.Descendants())
            {
                if (element.Name.LocalName == "Import")
                {
                    var att = element.Attribute("Project");
                    if (att != null)
                    {
                        if (att.Value.Contains("NuGet.targets"))
                        {
                            elementsToRemove.Add(element);
                        }
                    }
                }

                if (element.Name.LocalName == "Target")
                {
                    var att = element.Attribute("Name");
                    if (att != null && att.Value == "EnsureNuGetPackageBuildImports")
                    {
                        elementsToRemove.Add(element);
                    }
                }
            }

            if (elementsToRemove.Count > 0)
            {
                elementsToRemove.ForEach(element => element.Remove());
                BackupFile(prjFilename);
                xml.Save(prjFilename);
                Log("Project updated: " + prjFilename);
            }
        }

        private void Log(string msg)
        {
            TxtLog.Text += msg + "\r\n";
        }

    }
}
Eric Ouellet
fuente
El programa funcionó bien para convertir una tonelada de proyectos en mi solución. La última versión también tiene un campo "Directorio de paquetes NuGet", pero no parece afectar la salida. ¿Qué hace?
Christoffer Årstrand
Lo siento, no tengo idea. Sospecho que dependerá del contenido del archivo. Quizás pueda rastrear la función: "FromProjectFileRemoveNugetTargets" y ver si su archivo podría verse afectado. Lo siento por esa mala respuesta, no recuerdo lo que codifiqué :-(! Solo sé que usé dos veces en 2 computadoras diferentes con éxito.
Eric Ouellet
5

Vaya a Referencias en Visual Studio y observe qué paquetes faltan. Ahora haga clic derecho en Solución en Visual y haga clic en abrir carpeta en el explorador de archivos. Ahora abra la carpeta de paquetes y elimine la carpeta de paquetes faltantes. Abra Visual Studio y solo cree la solución. Todos los paquetes faltantes serán restaurados. Marque esto como respuesta si ayudé.

Sandip Jaiswal
fuente
4

Supongo que para el proyecto asp.net 4 nos estamos moviendo a la restauración automática, por lo que no hay necesidad de esto. Para proyectos más antiguos, creo que se necesita un poco de trabajo para convertir.

http://docs.nuget.org/docs/workflows/migrating-to-automatic-package-restore

Luca Morelli
fuente
Probablemente tengas razón. Acabo de intentar crear el proyecto usando exactamente los mismos pasos en VS2013 y el "Habilitar restauración de paquete Nuget" estaba allí. Gracias por el enlace, lo comprobaré ahora.
Dan Beaulieu
4

Este enfoque funcionó para mí:

  • Cerrar VS2015
  • Abra la solución temporalmente en VS2013 y habilite la restauración del paquete nuget haciendo clic derecho en la solución (también realicé una reconstrucción, pero sospecho que no es necesario).
  • Cerrar VS2013
  • Vuelva a abrir la solución en VS2015

Ahora también ha habilitado la restauración del paquete nuget en VS2015.

Håkon Seljåsen
fuente
4

Enfrenté el mismo problema al intentar construir el proyecto de muestra gplus-quickstart-csharp-master .

Miré de cerca el mensaje de error y encontré una solución para superar este error, con suerte, esto ayudará.

  • Haga clic derecho en el archivo de solución y ábralo en el Explorador de Windows.
  • Copie la carpeta .nuget con NuGet.Config, NuGet.exe, NuGet.targets ( enlace de descarga o simplemente copie de otro proyecto y reemplace)
  • Intenta reconstruir la solución.

Disfruta !!

Manoj Verma
fuente
4

La solución de Ivan Branets es esencialmente lo que me solucionó esto, pero podrían compartirse algunos detalles más.

En mi caso, estaba en VS 2015 usando la restauración automática de paquetes y TFS . Todo esto es bastante por defecto.

El problema era que cuando otro desarrollador intentaba obtener una solución de TFS, algunos paquetes no se restauraban completamente. (Por qué, eso no estoy del todo seguro todavía.) Pero la carpeta de paquetes contenía una carpeta para la referencia y el paquete NuGet, pero no se estaba expandiendo (digamos que faltaba una carpeta lib que contenga un .dll). Esta mitad allí, pero el concepto no del todo correcto era evitar que se restaurara el paquete.

Reconocerá esto porque la referencia tendrá un signo de exclamación amarillo sobre no resolverse.

Entonces, la solución de eliminar la carpeta dentro de los paquetes elimina el problema de bloqueo de restauración de paquetes. Luego puede hacer clic con el botón derecho en el nivel de solución superior para obtener la opción de restaurar paquetes , y ahora debería funcionar.

Greg
fuente
4

Cerrar VS. Eliminar todo en la carpeta de paquetes. Vuelva a abrir su solución. Haga clic derecho en su proyecto, seleccione 'Administrar paquetes nuget ...'. Verá aparecer una barra amarilla en la parte superior de la ventana 'Nuget Package Manager', que le pedirá que restaure los paquetes. Esto me ha funcionado.

Mandeep Janjua
fuente
3

Consola de Package Manager (Visual Studio, Herramientas> NuGet Package Manager> Consola de Package Manager): ejecute el comando Update-Package -reinstall -ProjectName donde está el nombre del proyecto afectado tal como aparece en el Explorador de soluciones. Use Update-Package -reinstall por sí mismo para restaurar todos los paquetes en la solución. Ver Paquete de actualización. También puede reinstalar un solo paquete, si lo desea.

de https://docs.microsoft.com/en-us/nuget/quickstart/restore

Andreas
fuente
1

También podría ser el resultado de ejecutar el programa mientras intentas instalar el paquete. está atenuado si intenta hacer clic en él mientras el IIS integrado se ejecuta en segundo plano.

Katushai
fuente
1

En caso de que alguien más encuentre este problema en Visual Studio 2017, asegúrese de que el archivo .sln y no la carpeta abra el proyecto, ya que Visual Studio no recogerá la configuración si se abre por carpeta. Esto sucede de manera predeterminada si está utilizando los servicios en línea de Visual Studio para git.

Jack
fuente
1

He utilizado msbuild /t:restore.


Crédito y fuente:

Mi problema era con MSBuild, así que seguí el enlace de @Vinney Kelly : Migración de soluciones integradas de MSBuild a Restauración automática de paquetes

y...

Eso funcionó COMO UN ENCANTO =]

MSBuild : use el msbuild /t:restorecomando, que restaura los paquetes que figuran en el archivo del proyecto ( solo PackageReference ). Disponible solo en NuGet 4.x + y MSBuild 15.1+, que se incluyen con Visual Studio 2017 . nuget restorey dotnet restoreambos usan este comando para proyectos aplicables.

Itzjak
fuente
En mi caso / t: restore no construye el proyecto para eso tuve que usar / restaurar el comando
Kishan Vaishnav
1

Si todo lo demás falla (o tal vez antes), es posible que desee verificar y ver si NuGet es una fuente de paquete. Instalé VS2017, y NO estaba allí por defecto. Pensé que era un poco extraño.

  1. Herramientas - Administrador de paquetes NuGet - Configuración del Administrador de paquetes
  2. Haga clic en 'Fuentes de paquete' en el navegador izquierdo del cuadro de diálogo.
  3. Use el signo más (+) para agregar la URL de Nuget: https://api.nuget.org/v3/index.json
douglas.kirschman
fuente
0

Tuve que eliminar la carpeta de paquetes cerrar y volver a abrir la solución (VS2015). No estaba migrando y no tenía paquetes registrados en el control de origen. Todo lo que puedo decir es que algo se estropeó y esto lo solucionó.

Chris Hammons
fuente
0

Me ayudó a través de Herramientas >>> Administrador de paquetes Nuget >>> General, luego marque la opción Permitir que Nuget descargue el paquete que falta y compruebe automáticamente los paquetes faltantes durante la compilación en Visual Studio .

ingrese la descripción de la imagen aquí

Anjan Kant
fuente
0

Para proyectos .NET Core , ejecuta dotnet restoreo dotnet buildordena en NuGet Package Manager Console(que ejecuta automáticamente la restauración)

Puedes ejecutar la consola desde

Herramientas> NuGet Package Manager> Consola de Package Manager

MOH3N
fuente
0

Estoy enfrentando el mismo problema. Estoy tratando de agregar un proyecto MVC que se creó en Visual Studio 2015 a una solución que hice en Visual Studio 2019.

Ya hay proyectos existentes en Visual Studio 2019, por lo que agregar este proyecto existente que creé en VS 2015 desencadena este mismo error. He intentado todas las respuestas aquí, pero no soluciona el problema.

Lo que hice fue poner la carpeta .nuget en la carpeta de la solución. Originalmente la jerarquía de la carpeta es esta:

Solution Folder (VS 2019)
  -> MVC 1 Project
  -> MVC 2 Project
  -> MVC 3 Project (Project that I am adding)
         -> .nuget folder (It contains a .nuget folder)

Entonces, el problema se solucionó cuando moví la carpeta .nuget en la carpeta de la solución:

    Solution Folder (VS 2019)
  -> MVC 1 Project
  -> MVC 2 Project
  -> MVC 3 Project (Project that I am adding)
  -> .nuget folder (It contains a .nuget folder)
Willy David Jr
fuente
0

Solución VS 2019 versión 16.4.4 dirigida a .NET Core 3.1

Después de haber probado casi todas las soluciones propuestas aquí, cerré VS. Cuando lo volví a abrir, después de unos segundos todo volvió a estar bien ...

Andrea Antonangeli
fuente
-4

Aún más simple, agregue una carpeta .nuget a su solución y aparecerá 'Restaurar paquetes Nuget' (no estoy seguro de si nuget.exe debe estar presente para que funcione).

Paxton
fuente