Come abilito il ripristino del pacchetto NuGet in Visual Studio?


273

C'è un post simile nello stack ma non aiuta il mio problema probabilmente perché sto usando Visual Studio 2015.

Come posso visualizzare l'opzione "Abilita ripristino pacchetto NuGet" in VS2015?

Ho scelto File> Nuovo progetto e ho creato un'applicazione Web ASP.NET vuota . Sto cercando questa opzione di menu.

inserisci qui la descrizione dell'immagine

Devo dire che ho cercato eventuali file nuGet preesistenti nella mia cartella del progetto e non ce ne sono.


4
Assicurati di provarlo con la tua soluzione e non con il progetto Web. Per impostazione predefinita, la soluzione non viene visualizzata quando esiste un solo progetto
JConstantine,

1
Sì, è sicuramente un errore facile da fare, ma mi sono assicurato di verificare la soluzione, penso che potrebbe essere correlato al 2015. L'opzione Abilita è disponibile in VS2013 quando seguo gli stessi passaggi.
Dan Beaulieu,

2
Anch'io. Ho anche provato a eliminare la cartella .nuget che riattiva l'opzione Abilita ripristino pacchetto NuGet in VS 2013 ma ancora nessun dado. Sto cercando di aprire un'applicazione MVC esistente creata in VS 2013.
Vinney Kelly,

4
@justanotherdev Sarebbe utile se fornissi un riferimento al nuovo flusso di lavoro per rendere il tuo commento un po 'più produttivo.
avantprime,

1
Non ho visto l'articolo di David Ebbo a cui fa riferimento oligofren, quindi ho appena aperto i file sln & csproj in Notepad ++ ed eliminato le sezioni che ha illustrato. Avevo la soluzione aperta in VS2015 e, una volta salvati i file, VS mi ha spinto a ricaricarli e i miei riferimenti di soluzione ora sono a posto e la mia soluzione viene compilata. Grazie mille, Vinney!
Rich Ward l'

Risposte:


248

Ci è voluto troppo tempo ma alla fine ho trovato questo documento sulla migrazione delle soluzioni integrate di MSBuild al ripristino automatico dei pacchetti e sono stato in grado di risolvere il problema utilizzando i metodi descritti qui.

  1. Rimuovere la '.nuget'directory della soluzione insieme dalla soluzione
  2. Rimuovi tutti i riferimenti a nuget.targetsdal tuo .csprojo dai .vbprojfile. Sebbene non sia ufficialmente supportato, il documento si collega a uno script di PowerShell se hai molti progetti che devono essere ripuliti. Ho modificato manualmente il mio a mano, quindi non posso dare alcun feedback sulla mia esperienza con esso.

Quando modifichi i tuoi file a mano, ecco cosa stai cercando:

File soluzione (.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

File di progetto (.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>

3
Mi manca totalmente qualcosa qui. Quando uso questo metodo, ottengo un carico di pacchetti di pacchetti installati in ogni soluzione che ho. Ho una soluzione con 10 pacchetti e un'altra soluzione con gli stessi identici pacchetti: vengono create due directory diverse ognuna contenente i 10 pacchetti. Utilizzando questo metodo, come si consolidano tutti i pacchetti in una singola directory (come consente il vecchio metodo VS2013 modificando il file NuGet.Config)?
Quarkly

Non vedi una cartella .nuget? Vai a controllare le soluzioni sull'eliminazione delle cartelle nella cartella dei pacchetti. È possibile che il pacchetto sia stato ripristinato a metà e che la spazzatura lo impedisca di ripristinarlo completamente.
Greg,

In effetti questa era la soluzione. Inoltre, ho aggiunto "nuget restore" prima di iniziare a costruire il progetto. i pacchetti nuget vengono scaricati automaticamente e la compilazione del progetto funziona bene dopo questo.
TarmoPikaro,

5
Per risparmiare un po 'di tempo, lo script da eseguire dal repository GitHub menzionato da @VinneyKelly è migrateToAutomaticPackageRestore.ps1, la sua magia, funziona!
Riga,

60

Microsoft ha abbandonato il supporto per "Abilita ripristino pacchetto NuGet" in VS2015 ed è necessario apportare alcune modifiche manuali per migrare vecchie soluzioni o aggiungere la funzionalità a nuove soluzioni. La nuova funzionalità è descritta abbastanza bene in NuGet Package Restore .

C'è anche una guida alla migrazione per i progetti esistenti (come menzionato in precedenza) qui: Guida alla migrazione di NuGet

Durante l'aggiornamento:

  1. non eliminare la directory .nuget.
  2. Elimina i file nuget.exe e nuget.targets.
  3. Lasciare nuget.config.
  4. Eliminare manualmente ciascuno dei file di progetto di qualsiasi riferimento ai target NuGet. Lo script Powershell menzionato sembrava fare più danni che benefici.

Quando si crea un nuovo progetto:

  1. Nella tua soluzione Visual Studio 2015, crea una Directory soluzione denominata .nuget.
  2. Creare una directory effettiva della directory della soluzione (dove risiede il file .sln) e chiamarla .nuget (tenere presente che la directory della soluzione non è la stessa della directory del file system effettiva anche se hanno lo stesso nome).
  3. Creare un file nella directory .nuget chiamato nuget.config.

  4. Aggiungi "nuget.config" alla directory della soluzione creata nel passaggio 2.

  5. Inserire il testo seguente nel file 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>

Questo file di configurazione ti consentirà di consolidare tutti i tuoi pacchetti in un unico posto in modo da non avere 20 copie diverse dello stesso pacchetto fluttuanti sul tuo file system. Il percorso relativo cambierà in base all'architettura della directory della soluzione, ma dovrebbe puntare a una directory comune a tutte le soluzioni.

È necessario riavviare Visual Studio dopo aver eseguito il passaggio 5. Nuget non riconoscerà le modifiche finché non lo si fa.

Infine, potrebbe essere necessario utilizzare "Nuget Package Manager for Solutions" per disinstallare e reinstallare i pacchetti. Non so se questo sia stato un effetto collaterale dello script Powershell che ho eseguito o solo un metodo per rimettere in moto NuGet. Una volta che ho fatto tutti questi passaggi, la mia complicata architettura di compilazione ha funzionato perfettamente nel far cadere nuovi pacchetti quando ho controllato i progetti da TFVC.


1
Perché eliminare il file nuget.targets, riceverò una build coerente quando manca?
Frode Nilsen,

1
Gli obiettivi sembrano essere ora integrati nell'IDE, così come la funzione che 'nugget.exe' ha usato per fornire. L'unica cosa di cui hai ancora bisogno è la configurazione.
Quarkly

1
Oltre ai passaggi indicati da DRAirey, ho dovuto eseguire le seguenti operazioni: 1) Invece di $ \ .. \ .. \ .. \ .. \ Pacchetti, utilizzato ../../ (convenzione del percorso principale di Windows, no $ all'inizio 2) Salvare la soluzione, chiudere e riaprire affinché il file nuget.config venga letto e onorato dall'installazione del pacchetto
Sudhanshu Mishra,

Questo mi ha aiutato per il mio nuovo progetto VS2015 in cui ho gestito i pacchetti dir e altri membri del team non sono stati in grado di ricostruirsi a causa delle dipendenze NuGet.
azec-pdx,

1
È necessario riavviare Visual Studio dopo aver eseguito il passaggio 5. Nuget non riconoscerà le modifiche finché non lo si fa.
Barry Colebank Jr

35

Facoltativamente, è possibile rimuovere tutte le cartelle dalla cartella "pacchetti" e selezionare "Gestisci pacchetti NuGet per soluzione ...". In questo caso il pulsante "Ripristina" appare sui pacchetti NuGet Windows.


1
Prova a chiudere e riaprire la finestra dei pacchetti NuGet dopo aver rimosso le cartelle all'interno della cartella "pacchetti".
Ivan Branets,

6
+1 Questo ha funzionato per me, nota che il pulsante di ripristino si apre nella parte superiore della finestra, appena sotto la scheda. Dice: "Alcuni pacchetti NuGet mancano da questa soluzione. Fare clic per ripristinare dalle origini dei pacchetti online."
Eruza,

Così semplice e facile .. questo ha funzionato per me .. Immagino che dovrebbe essere una risposta più votata :)
Nirman,

Così semplice e facile. Questa dovrebbe essere la risposta.
Axel,

Non sarebbe una buona idea aggiungere questa cartella al file .gitignore?
Axel,

26

Come già accennato da Mike, in VS2015 non esiste l'opzione "Abilita ripristino pacchetto NuGet". Dovrai richiamare manualmente il processo di ripristino. Un modo carino - senza fare confusione con file e directory - è usare la Console di gestione dei pacchetti NuGet : fai clic sul campo "Avvio rapido" (di solito nell'angolo in alto a destra), inserisci console, apri la console di gestione e inserisci il comando:

Update-Package reinstall

Ciò reinstallerà tutti i pacchetti di tutti i progetti nella soluzione. Per specificare un singolo progetto, inserire:

Update-Package reinstall -ProjectName MyProject

Naturalmente questo è necessario solo quando il Restorepulsante - a volte offerto da VS2015 - non è disponibile. I comandi di aggiornamento più utili sono elencati e spiegati qui: https://docs.microsoft.com/en-us/nuget/consume-packages/reinstalling-and-updating-packages


Grazie mille, ho avuto il problema simile. Ho appena risolto il mio problema tramite la tua procedura. Grazie mille
McElie l'

Lo stesso qui, l'unico che ha funzionato e non ha bisogno di un sacco di cose scritte dappertutto
Harvey Lin

La risposta più utile qui!
Neo,

13

In caso di problemi o mancanza di pacchetti, è possibile fare semplicemente clic con il pulsante destro del mouse sul progetto e selezionare " Gestisci pacchetti NuGet per soluzione ... ". Dopo aver fatto clic su questo si aprirà una schermata in cui viene visualizzata una barra dei menu che dice "Ripristina": Ristabilire

Cliccaci sopra e i pacchetti richiesti verranno installati automaticamente.
Credo che questo sia quello che stai cercando, questo ha risolto i miei problemi.


3
Ma questo aiuta solo se viene visualizzata quella barra di avviso, non nel mio caso.
Nicholas Petersen,

2
Un passaggio che installa manualmente un pacchetto manca completamente il punto di un ripristino automatico.
Quarkly

Credo che questa dovrebbe probabilmente essere la risposta accettata, è la stessa funzionalità
user25064

1
Sono stato in grado di vedere l'opzione da ripristinare facendo clic con il tasto destro sulla soluzione. Era lì sotto "Gestisci i pacchetti NuGet per soluzione". Ha fatto il trucco per me.
Daryl

1
Non funziona per me - vedo avvisi nella soluzione relativa ai pacchetti nuget mancanti, ma gestire i pacchetti nuget non mi presenta un'opzione per scaricarli. Inoltre non posso costruire e ripristinare. Anche il comando di ripristino non fa nulla.
Markus,


6

Quando si aggiornano progetti con pacchetti nuget da Vx20XX a VS2015, è possibile che si verifichino problemi con i pacchetti nuget.

Esempio di messaggio di errore: questo progetto fa riferimento ai pacchetti NuGet mancanti su questo computer. Abilita NuGet Package Restore per scaricarli.

Aggiornamento 2016-02-06: avevo un collegamento alle informazioni ma non funziona più. Sospetto che un recente percorso abbia risolto il problema ???

Ho risolto il mio problema scrivendo un piccolo programma che eseguiva il ripristino del pacchetto integrato in MSBuild rispetto al ripristino automatico del pacchetto

Puoi scaricare il file eseguibile dello strumento qui .

Per favore fatemi sapere il risultato :-)!

inserisci qui la descrizione dell'immagine

Codice come riferimento:

<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";
        }

    }
}

Il programma ha funzionato bene per convertire una tonnellata di progetti nella mia soluzione. L'ultima versione ha anche un campo "Directory of NuGet Packages", ma non sembra influire sull'output. Che cosa fa?
Christoffer Årstrand,

Scusa, non ne ho idea. Sospetto che dipenderà dal contenuto del file. Forse puoi tenere traccia della funzione: "FromProjectFileRemoveNugetTargets" e vedere se il tuo file potrebbe essere interessato? Scusate la cattiva risposta, non ricordo cosa ho codificato :-(! So solo che ho usato due volte con successo su 2 computer diversi.
Eric Ouellet,

5

Vai a Riferimenti in Visual Studio e guarda quali pacchetti mancano. Ora fai clic destro su Soluzione in Visual e fai clic su Apri cartella in Esplora file. Ora apri la cartella dei pacchetti ed elimina la cartella dei pacchetti mancanti. Apri Visual Studio e crea la soluzione. tutti i pacchetti mancanti verranno ripristinati. Si prega di contrassegnare questo come risposta se ho aiutato.


4

Suppongo che per il progetto asp.net 4 stiamo passando al ripristino automatico, quindi non è necessario. Per i progetti più vecchi penso che sia necessario un po 'di lavoro da convertire.

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


Probabilmente hai ragione. Ho appena provato a creare il progetto usando gli stessi identici passaggi in VS2013 e "Abilita ripristino pacchetto Nuget" era lì. Grazie per il link, lo controllerò ora.
Dan Beaulieu,

4

Questo approccio ha funzionato per me:

  • Chiudi VS2015
  • Apri temporaneamente la soluzione in VS2013 e abilita il ripristino del pacchetto nuget facendo clic con il pulsante destro del mouse sulla soluzione (ho anche fatto una ricostruzione, ma sospetto che non sia necessario).
  • Chiudi VS2013
  • Riaprire la soluzione in VS2015

Ora hai abilitato il ripristino del pacchetto nuget anche in VS2015.


4

Ho riscontrato lo stesso problema durante il tentativo di creare un progetto di esempio gplus-quickstart-csharp-master .

Ho osservato attentamente il messaggio di errore e ho trovato una soluzione alternativa al superamento di questo errore, si spera che ciò possa aiutare.

  • Fare clic con il tasto destro sul file della soluzione e aprire in Windows Explorer.
  • Copia la cartella .nuget con NuGet.Config, NuGet.exe, NuGet.targets (scarica il link o copia semplicemente da un altro progetto e sostituito)
  • Prova a ricostruire la soluzione.

Godere !!


4

La soluzione di Ivan Branets è essenzialmente ciò che mi ha risolto, ma alcuni dettagli potrebbero essere condivisi.

Nel mio caso, ero in VS 2015 usando il ripristino automatico dei pacchetti e TFS . Questo è tutto roba di default.

Il problema era che quando un altro sviluppatore cercava di ottenere una soluzione da TFS, alcuni pacchetti non venivano completamente ripristinati. (Perché, non sono ancora del tutto sicuro.) Ma la cartella dei pacchetti conteneva una cartella per il riferimento e il pacchetto NuGet, ma non si stava espandendo (diciamo che mancava una cartella lib contenente un .dll.) Questa metà lì, ma il concetto non proprio corretto stava impedendo il ripristino del pacchetto.

Lo riconoscerai perché il riferimento avrà un punto esclamativo giallo per non essere risolto.

Pertanto, la soluzione di eliminare la cartella all'interno dei pacchetti rimuove il problema di blocco del ripristino dei pacchetti. Quindi è possibile fare clic con il pulsante destro del mouse sul livello di soluzione superiore per ottenere l'opzione per ripristinare i pacchetti e ora dovrebbe funzionare.


4

Chiudi VS. Elimina tutto nella cartella dei pacchetti. Riapri la tua soluzione. Fare clic con il tasto destro del mouse sul progetto, selezionare "Gestisci pacchetti nuget ...". Vedrai apparire una barra gialla nella parte superiore della finestra 'Nuget Package Manager', che ti chiede di ripristinare i pacchetti. Questo ha funzionato per me.


3

Console Gestione pacchetti (Visual Studio, Strumenti> Gestione pacchetti NuGet> Console Gestione pacchetti): eseguire il comando Update-Package -reinstall -ProjectName dove si trova il nome del progetto interessato come appare in Esplora soluzioni. Utilizzare Update-Package -reinstall da solo per ripristinare tutti i pacchetti nella soluzione. Vedi pacchetto di aggiornamento. Se lo si desidera, è anche possibile reinstallare un singolo pacchetto.

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


1

Potrebbe anche essere il risultato dell'esecuzione del programma mentre si sta tentando di installare il pacchetto. è disattivato se si tenta di fare clic su di esso mentre l'IIS integrato è in esecuzione in background.


1

Nel caso in cui qualcun altro trovi questo problema in Visual Studio 2017, assicurati che il progetto sia aperto dal file .sln e non dalla cartella, poiché Visual Studio non rileverà le impostazioni se è aperto dalla cartella. Questo accade di default se stai usando i servizi online di Visual Studio per git.


1

Ho usato msbuild /t:restore.


Credito e fonte:

Il mio problema era con MSBuild Quindi ho seguito il link di @Vinney Kelly : Migrazione di soluzioni integrate con MSBuild al ripristino automatico dei pacchetti

e...

Che ha funzionato LIKE A CHARM =]

MSBuild : utilizzare il msbuild /t:restorecomando, che ripristina i pacchetti pacchetti elencati nel file di progetto ( solo PackageReference ). Disponibile solo in NuGet 4.x + e MSBuild 15.1+, inclusi in Visual Studio 2017 . nuget restoreed dotnet restoreentrambi usano questo comando per i progetti applicabili.


Nel mio caso / t: il ripristino non crea il progetto per cui ho dovuto usare il comando / restore
Kishan Vaishnav,

1

Se tutto il resto fallisce (o forse prima di allora) potresti voler controllare e vedere se NuGet è un pacchetto sorgente. Ho installato VS2017 e NON era presente per impostazione predefinita. Ho pensato che fosse strano.

  1. Strumenti - Gestione pacchetti NuGet - Impostazioni Gestione pacchetti
  2. Fai clic su "Sorgenti pacchetto" nel riquadro di dialogo sinistro.
  3. Usa il segno più (+) per aggiungere l'URL Nuget: https://api.nuget.org/v3/index.json

0

Ho dovuto rimuovere la cartella dei pacchetti per chiudere e riaprire la soluzione (VS2015). Non stavo migrando e non avevo i pacchetti controllati nel controllo del codice sorgente. Tutto quello che posso dire è che qualcosa è stato incasinato e questo ha risolto il problema.


0

Mi ha aiutato con gli strumenti >>> Nuget Package Manager >>> Generale quindi seleziona l'opzione Consenti a Nuget di scaricare il pacchetto mancante e di verificare automaticamente la presenza di pacchetti mancanti durante la compilazione in Visual Studio .

inserisci qui la descrizione dell'immagine


0

Per i progetti .NET Core , esegui dotnet restoreo esegui il dotnet buildcomando NuGet Package Manager Console(che esegue automaticamente il ripristino)

Puoi eseguire la console da

Strumenti> Gestione pacchetti NuGet> Console Gestione pacchetti


0

Sono di fronte allo stesso problema. Sto provando ad aggiungere un progetto MVC che è stato creato su Visual Studio 2015 a una soluzione che ho realizzato su Visual Studio 2019.

Esistono già progetti su Visual Studio 2019, quindi l'aggiunta di questo progetto esistente che ho creato su VS 2015 fa scattare lo stesso errore. Ho provato tutte le risposte qui ma non risolve il problema.

Quello che ho fatto è stato semplicemente inserire la cartella .nuget nella cartella della soluzione. Inizialmente la gerarchia della cartella è questa:

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)

Quindi il problema è stato risolto quando ho spostato la cartella .nuget nella cartella della soluzione stessa:

    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)

0

VS 2019 Versione 16.4.4 Soluzione destinata a .NET Core 3.1

Dopo aver provato quasi tutte le soluzioni proposte qui, ho chiuso VS. Quando l'ho riaperto, dopo alcuni secondi tutto è tornato per essere OK ...


-4

Ancora più semplice, aggiungi una cartella .nuget alla tua soluzione e appariranno i "Restore Nuget Packages" (non sono sicuro che sia necessario che nuget.exe sia presente affinché funzioni).

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.