Як увімкнути відновлення пакунків NuGet у Visual Studio?


272

У стеці є аналогічна публікація, але це не допомагає з моєю проблемою, можливо, тому що я використовую Visual Studio 2015.

Як я можу отримати опцію "Увімкнути відновлення пакета NuGet" у VS2015?

Я вибрав Файл> Новий проект і створив порожню веб-програму ASP.NET . Я шукаю цей варіант меню.

введіть тут опис зображення

Я мушу зазначити, що я шукав будь-які попередні файли nuGet у моїй папці проекту, а таких немає.


4
Переконайтеся, що ви намагаєтеся проти цього рішення, а не веб-проекту. За замовчуванням рішення не відображається, коли існує лише один проект
JConstantine

1
Так, це, безумовно, є легкою помилкою, але я обов'язково переконався, чи не вирішено рішення, я думаю, це може бути пов'язано з 2015 роком. Параметр Enable доступний у VS2013, коли я виконую ті самі кроки.
Dan Beaulieu

2
Те ж саме. Я навіть спробував видалити папку .nuget, яка знову активує опцію Увімкнути відновлення пакета NuGet у VS 2013, але все ще не має кісток. Я намагаюся відкрити існуючий додаток MVC, який був створений у VS 2013.
Vinney Kelly

4
@justagetherdev Було б корисно, якби ви надали посилання на новий робочий процес, щоб зробити ваш коментар трохи продуктивнішим.
аванспрем

1
Я не бачив статті Девіда Еббо, на яку посилався oligofren, тому я просто відкрив файли sln & csproj у «Блокноті ++» та видалив розділи, які він проілюстрував. У мене було відкрито рішення у VS2015, і як тільки я зберег файли, VS запропонував мені перезавантажити їх, і мої посилання на рішення тепер добре, і моє рішення компілюється. Велике спасибі, Вінні!
Річ Уорд

Відповіді:


248

Це зайняло дуже багато часу, але я нарешті знайшов цей документ про міграцію MSBuild-інтегрованих рішень для автоматичного відновлення пакунків, і мені вдалося вирішити проблему, використовуючи описані тут методи.

  1. Видаліть '.nuget'каталог рішень разом із рішенням
  2. Видаліть усі посилання на nuget.targetsсвої файли .csprojчи .vbprojфайли. Хоча офіційно не підтримується, документ посилається на сценарій PowerShell, якщо у вас є багато проектів, які потрібно очистити. Я вручну редагував шахту вручну, тому не можу дати жодного відгуку щодо свого досвіду роботи з цим.

Редагуючи файли вручну, ось що ви шукаєте:

Файл рішення (.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

Файл проекту (.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
Мені тут зовсім чогось не вистачає. Коли я використовую цей метод, я отримую набір пакетів, встановлених у кожному рішення, яке я маю. У мене є одне рішення з 10 пакетами та інше рішення з точно такими ж пакунками: два різні каталоги створюються кожен, що містить 10 пакетів. Використовуючи цей метод, як ви об'єднаєте всі ваші пакунки в єдиний каталог (як дозволяє старий метод VS2013 шляхом редагування файлу NuGet.Config)?
Quarkly

Не бачите папки .nuget? Перегляньте рішення щодо видалення папок у папці пакунків. Можливо, ваш пакет наполовину відновлений, і це сміття блокує його відновлення повністю.
Грег

Дійсно, це було рішення. До цього - я додав "відновлення нута" перед тим, як почати створювати проект. nuget пакети завантажуються автоматично, і складання проекту працює нормально після цього.
ТармоПікаро

5
Щоб заощадити трохи часу, сценарій для виконання зі сховища GitHub, згаданого @VinneyKelly, є migrateToAutomaticPackageRestore.ps1, його магія, працює!
Рига

60

Microsoft відмовилася від підтримки "Увімкнути відновлення пакета NuGet" у VS2015, і вам потрібно зробити кілька ручних змін, щоб перенести старі рішення або додати цю функцію до нових рішень. Нова функція досить добре описана в NuGet Package Restore .

Тут також є посібник з міграції для існуючих проектів (як уже згадувалося): Посібник з міграції NuGet

Під час оновлення:

  1. не видаляйте каталог .nuget.
  2. Видаліть файли nuget.exe і nuget.targets.
  3. Залиште nuget.config.
  4. Очистіть вручну кожен із файлів проекту будь-якого посилання на цілі NuGet. Згаданий сценарій Powershell, здавалося, завдає більше шкоди, ніж користі.

Створюючи новий проект:

  1. У своєму рішенні Visual Studio 2015 створіть Каталог рішень під назвою .nuget.
  2. Створіть фактичну папку каталогу рішення (де живе .sln файл) та назвіть її .nuget (зауважте, що каталог рішень не є таким, як фактичний каталог файлової системи, навіть якщо вони мають те саме ім’я).
  3. Створіть файл у каталозі .nuget під назвою nuget.config.

  4. Додайте "nuget.config" до каталогу рішення, створеного на кроці №2.

  5. Помістіть наступний текст у файл 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>

Цей файл конфігурації дозволить консолідувати всі ваші пакунки в одному місці, щоб у вас не було 20 різних копій одного і того ж пакету, що плавав навколо вашої файлової системи. Відносний шлях змінюватиметься залежно від архітектури каталогу рішень, але він повинен вказувати на загальний для всіх ваших рішень каталог.

Вам потрібно перезапустити візуальну студію після виконання кроку 5. Nuget не розпізнає зміни, поки ви цього не зробите.

Нарешті, можливо, вам доведеться використовувати "Nuget Package Manager for Solutions" для видалення та повторної інсталяції пакетів. Я не знаю, чи це був побічний ефект сценарію Powershell, який я запустив, або просто метод відбити NuGet назад у передачу. Після того, як я зробив усі ці кроки, моя складна архітектура побудови бездоганно працювала над тим, щоб знижувати нові пакети, коли я перевіряв проекти з TFVC.


1
Навіщо видаляти файл nuget.targets, я отримаю послідовну збірку, коли цього немає?
Frode Nilsen

1
Здається, цілі інтегровані в IDE зараз, а також функція, яку використовував 'nugget.exe'. Єдине, що вам все-таки потрібно - це конфігурація.
Quarkly

1
Окрім кроків, згаданих DRAirey, мені довелося виконати наступні дії: 1) Замість пакетів $ \ .. \ .. \ .. \ .. \, що використовуються ../../ (умова батьківського шляху Windows, ні $ на початку 2) Збережіть рішення, закрийте і знову відкрийте для nuget.config, щоб прочитати та шанувати при встановленні пакету
Sudhanshu Mishra

Це допомогло в моєму новому проекті VS2015, де я працював над пакунками, і інші члени команди не змогли відновити через залежності від NuGet.
azec-pdx

1
Вам потрібно перезапустити візуальну студію після виконання кроку 5. Nuget не розпізнає зміни, поки ви цього не зробите.
Баррі Коулбанк-молодший

35

За бажанням можна видалити всі папки з папки "пакети" та вибрати "Керувати пакетами NuGet для рішення ...". У цьому випадку на NuGet Packages Windows з’являється кнопка «Відновити».


1
Спробуйте закрити і знову відкрити вікно NuGet Packages після видалення папок всередині папки "пакети".
Іван Бранець

6
+1 Це працювало для мене, зауважте, що кнопка відновлення спливає у верхній частині вікна, трохи нижче вкладки. Каже: "У цьому рішенні відсутні деякі пакети NuGet. Клацніть, щоб відновити з джерел вашого Інтернет-пакета."
Еруза

Так просто і легко .. це працювало для мене .. Здогадайтесь, це має бути більш проголосованою відповіддю :)
Nirman

Так просто і легко. Це має бути відповіддю.
Аксель

Чи не було б гарною ідеєю додати цю папку до файлу .gitignore?
Аксель

26

Як вже згадував Майк, у VS2015 немає опції "Увімкнути відновлення пакета NuGet". Вам доведеться викликати процес відновлення вручну. Хороший спосіб - не возитися з файлами та каталогами - використовувати консоль управління пакунками NuGet : натисніть поле «Швидкий старт» (як правило, у верхньому правому куті), введіть console, відкрийте консоль управління та введіть команду:

Update-Package reinstall

Це дозволить перевстановити всі пакети всіх проектів у ваше рішення. Щоб вказати один проект, введіть:

Update-Package reinstall -ProjectName MyProject

Звичайно, це потрібно лише тоді, коли Restoreкнопка, яку інколи пропонує VS2015, недоступна. Більше корисних команд оновлення перераховано та пояснено тут: https://docs.microsoft.com/en-us/nuget/consume-packages/reinstalling-and-updating-packages


Велике спасибі, у мене була подібна проблема. Я просто вирішив свою проблему через вашу процедуру. Дуже
дякую

Тут же, єдиний, хто працював і не потребує купою речей, написаних всюди
Харві Лін

Тут найкорисніша відповідь!
Нео

13

Якщо у вас є якісь проблеми або відсутні будь-які пакети, ви можете просто клацнути правою кнопкою миші у своєму проекті та вибрати " Керувати пакетами NuGet для вирішення ... ". Після натискання на це відкриється екран, де ви бачите рядок меню з написом "Відновити": Відновлення

Натисніть на нього, і необхідні пакети будуть встановлені автоматично.
Я вважаю, що це те, що ви шукаєте, це вирішило мої проблеми.


3
Але це допомагає лише у тому випадку, якщо з’явиться ця смуга попередження, у моєму випадку це не відбувається.
Микола Петерсен

2
Етап, який встановлює пакет вручну, повністю пропускає точку автоматизованого відновлення.
Quarkly

Я вважаю, що це, мабуть, має бути прийнятою відповіддю, це та сама функціональність
user25064

1
Мені вдалося побачити варіант відновлення, натиснувши правою кнопкою миші на рішення. Він був там під "Управління пакетами NuGet для вирішення". Зробив трюк для мене.
Дарил

1
Не працює для мене - я бачу попередження у рішенні щодо відсутніх пакунків нугетів, але керування пакунками нугетів не дає мені можливості завантажити їх. Я також не можу будувати та відновлювати. Також команда відновлення нічого не робить.
Маркус


6

Під час оновлення проектів з натурними пакетами від Vx20XX до VS2015, у вас можуть виникнути проблеми з нульовими пакетами.

Приклад повідомлення про помилку: Цей проект посилається на пакунки NuGet, які відсутні на цьому комп’ютері. Увімкніть відновлення пакунків NuGet, щоб завантажити їх.

Оновлення 06.06.2016: У мене було посилання на інформацію, але вона більше не працює. Я підозрюю, що недавній шлях вирішив проблему ???

Я вирішив проблему написання невеликої програми, яка робить відновлення пакунків, відновлених MSBuild порівняно з автоматичним відновленням пакетів

Ви можете завантажити виконуваний інструмент тут .

Будь ласка, повідомте мені результат :-)!

введіть тут опис зображення

Код як довідковий:

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

    }
}

Програма чудово працювала для перетворення тонни проектів у моє рішення. В останній версії також є поле "Каталог пакунків NuGet", але, схоже, це не впливає на вихід. Що це робить?
Крістоффер Ерстран

Вибачте, я поняття не маю. Підозрюю, що це буде залежати від змісту файлу. Можливо, ви можете відстежити функцію: "FromProjectFileRemoveNugetTargets" і побачити, чи може це вплинути на ваш файл? Вибачте за цю погану відповідь, я не пам'ятаю, що я кодував :-(! Я просто знаю, що два рази користувався на двох різних комп’ютерах з успіхом.
Ерік Оуеллет

5

Зайдіть у References у візуальній студії та подивіться, які пакунки відсутні. Тепер клацніть правою кнопкою миші на Solution in Visual і натисніть на відкриту папку у файлі Explorer. Тепер відкрийте папку пакунків та видаліть папку відсутніх пакетів. Відкрийте візуальну студію і просто побудуйте рішення. усі відсутні пакети будуть відновлені. Будь ласка, позначте це як відповідь, якщо я допомогла.


4

Я думаю, що для проекту asp.net 4 ми переходимо до автоматичного відновлення, тому в цьому немає необхідності. Для старих проектів я думаю, що потрібно трохи попрацювати над перетворенням.

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


Ви, мабуть, праві. Я просто спробував створити проект, використовуючи такі ж самі кроки у VS2013, і там було "Увімкнути відновлення Nuget Package". Дякую за посилання, я зараз його перевірю.
Dan Beaulieu

4

Такий підхід працював для мене:

  • Закрити VS2015
  • Тимчасово відкрийте рішення у VS2013 та увімкніть відновлення пакунків з нульовими клацаннями, клацнувши правою кнопкою миші (я також зробив перебудову, але я підозрюю, що це не потрібно).
  • Закрити VS2013
  • Повторно відкрийте рішення у VS2015

Тепер ви також увімкнули відновлення пакунків з цілим пакетом у VS2015.


4

Я зіткнувся з тим же питанням, намагаючись створити зразок проекту gplus-quickstart-csharp-master .

Я уважно переглянув повідомлення про помилку і виявив обхід подолання цієї помилки, сподіваюся, це допоможе.

  • Клацніть правою кнопкою миші на файл рішення та відкрийте у Windows Explorer.
  • Скопіюйте папку .nuget з NuGet.Config, NuGet.exe, NuGet.targets ( посилання для завантаження або просто скопіюйте з іншого проекту та замінивши)
  • Спробуйте відновити рішення.

Насолоджуйтесь !!


4

Рішення Івана Бранеця - це, по суті, те, що зафіксувало це для мене, але можна було б поділитися деякими деталями.

У моєму випадку я був у VS 2015, використовуючи функцію відновлення автоматичного пакету та TFS . Це все досить за замовчуванням.

Проблема полягала в тому, що коли інший розробник намагався отримати рішення від TFS, деякі пакети не були повністю відновлені. (Чому в цьому я ще не зовсім впевнений.) Але папка пакунків містила папку для посилання та пакет NuGet, але вона не розширювалася (скажімо, папка lib, що містить .dll, відсутня.) Ця половина там, але не дуже правильна концепція перешкоджала відновленню пакету.

Ви впізнаєте це, оскільки у посилання буде жовтий знак оклику про те, що його не вирішено.

Отже, рішення про видалення папки в межах пакетів усуває проблему блокування відновлення пакета. Потім ви можете натиснути правою кнопкою миші на верхньому рівні рішення, щоб отримати можливість відновлення пакетів , і тепер це повинно працювати.


4

Закрити VS. Видаліть усе в папці пакунків. Повторно відкрийте своє рішення. Клацніть правою кнопкою миші на вашому проекті, виберіть "Керувати пакунками нугетів ...". У верхній частині вікна "Менеджер пакунків" з'явиться жовта смуга з проханням відновити пакунки. Це спрацювало на мене.


3

Консоль диспетчера пакунків (Visual Studio, Інструменти> NuGet Package Manager> Package Manager Console): Запустіть команду Update-Package -reinstall -ProjectName, де вказано ім'я проекту, що відображається, як це відображається в Провіднику рішень. Використовуйте Update-Package -встановлення самостійно, щоб відновити всі пакети в рішенні. Див. Оновлення-пакет. За бажанням ви також можете встановити один пакет.

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


1

Може бути результатом запуску програми під час спроби встановити пакет. вона сіра, якщо ви спробуєте натиснути її, коли вбудований IIS працює у фоновому режимі.


1

Якщо хтось інший знайде цю проблему у Visual Studio 2017, переконайтесь, що проект відкрито файлом .sln, а не папкою, оскільки візуальна студія не підбере налаштування, якщо вона відкриється папкою. Це відбувається за замовчуванням, якщо ви використовуєте онлайн-сервіси Visual Studio для git.


1

Для проектів .NET Core запустіть dotnet restoreабо dotnet buildкомандуйте вNuGet Package Manager Console (що автоматично запускає відновлення)

Ви можете запустити консоль з

Інструменти> NuGet Package Manager> Console Package Manager


1

Я звик msbuild /t:restore.


Кредит та джерело:

Моя проблема була з MSBuild. Тому я перейшов до посилання @Vinney Kelly : Міграція MSBuild-інтегрованих рішень для автоматичного відновлення пакунків

і ...

Це працювало LIKE A CHARM =]

MSBuild : використовуйте msbuild /t:restoreкоманду, яка відновлює пакети пакетів, перелічених у файлі проекту ( лише PackageReference ). Доступний лише в NuGet 4.x + та MSBuild 15.1+, які входять до Visual Studio 2017 . nuget restoreі dotnet restoreобидва використовують цю команду для застосовних проектів.


У моєму випадку / t: Restore не створює проект для того, що мені довелося використовувати / відновити команду
Kishan Vaishnav

1

Якщо все інше не вдається (або, можливо, раніше), ви можете перевірити і перевірити, чи NuGet є джерелом пакету. Я встановив VS2017, і його за замовчуванням НЕ було. Я думав, що це дивно.

  1. Інструменти - Менеджер пакунків NuGet - Параметри диспетчера пакунків
  2. Клацніть "Джерела пакета" ліворуч від діалогового вікна.
  3. Використовуйте знак плюс (+), щоб додати Nuget URL: https://api.nuget.org/v3/index.json

0

Мені довелося видалити закрите папку пакетів і знову відкрити (VS2015) рішення. Я не мігрував, і у мене не було перевірених пакетів для контролю джерел. Все, що я можу сказати, щось заплутало, і це виправило.


0

Допоміг мені через Інструменти >>> Менеджер пакунків Nuget >>> Загальне, потім позначте опцію Дозволити Nuget завантажувати відсутні пакет і Автоматично перевіряти відсутні пакети під час складання у візуальній студії .

введіть тут опис зображення


0

Я зіткнувся з тією ж проблемою. Я намагаюся додати проект MVC, створений на Visual Studio 2015, до рішення, яке я зробив у Visual Studio 2019.

У Visual Studio 2019 вже є проекти, тому додавання цього існуючого проекту, створеного в VS 2015, викликає цю саму помилку. Я спробував усі відповіді тут, але це не вирішує проблему.

Що я зробив, це просто помістити папку .nuget у папку рішення. Спочатку ієрархія папки така:

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)

Тож проблема була виправлена, коли я перемістив папку .nuget у саму папку рішення:

    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 Версія 16.4.4 Націлення на рішення .NET Core 3.1

Перепробувавши майже всі запропоновані тут рішення, я закрив В.С. Коли я знову відкрив його, через кілька секунд все знову було в порядку ...


-4

Навіть простіше, додайте до рішення папку .nuget і з'явиться "Відновити Nuget Packages" (не впевнений, чи потрібен Nuget.exe, щоб він працював).

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.