Как включить восстановление пакета NuGet в Visual Studio?

273

В стеке есть похожий пост, но он не помогает с моей проблемой, возможно, потому что я использую Visual Studio 2015.

Как я могу получить параметр «Включить восстановление пакета NuGet» в VS2015?

Я выбрал «Файл»> «Новый проект» и создал пустое веб-приложение ASP.NET . Я ищу этот пункт меню.

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

Я должен упомянуть, что я искал любые уже существующие файлы nuGet в папке моего проекта, и их нет.

Дэн Болье
источник
4
Убедитесь, что вы пытаетесь сделать это против своего решения, а не веб-проекта. По умолчанию решение не отображается, когда существует только один проект
JConstantine
1
Да, это определенно простая ошибка, но я действительно проверял решение, думаю, это может быть связано с 2015 годом. Опция Включить доступна в VS2013, когда я выполняю те же действия.
Дэн Болье
2
Тоже самое. Я даже пытался удалить папку .nuget, которая снова активирует опцию «Включить восстановление пакета NuGet» в VS 2013, но все еще не играла в кости. Я пытаюсь открыть существующее приложение MVC, которое было создано в VS 2013.
Винни Келли
4
@justanotherdev Было бы полезно, если бы вы предоставили ссылку на новый рабочий процесс, чтобы сделать ваш комментарий более продуктивным.
avantprime
1
Я не видел статью Дэвида Эббо, на которую ссылается oligofren, поэтому я просто открыл файлы sln & csproj в Notepad ++ и удалил разделы, которые он иллюстрировал. У меня было открытое решение в 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» перед началом сборки проекта. пакеты nuget загружаются автоматически, и после этого сборка проекта работает нормально.
TarmoPikaro
5
Чтобы сэкономить немного времени, скрипт для выполнения из репозитория GitHub, упомянутого @VinneyKelly, является migrateToAutomaticPackageRestore.ps1, его магия работает!
Рига,
60

Microsoft прекратила поддержку «Включить восстановление пакета NuGet» в VS2015, и вам необходимо внести некоторые изменения вручную, чтобы либо перенести старые решения, либо добавить функцию в новые решения. Новая функция довольно хорошо описана в Восстановлении пакета NuGet .

Здесь также есть руководство по миграции для существующих проектов (как упоминалось ранее): Руководство по миграции 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 разных копий одного и того же пакета. Относительный путь будет меняться в зависимости от архитектуры каталога вашего решения, но он должен указывать на каталог, общий для всех ваших решений.

Вам нужно перезапустить Visual Studio после выполнения шага 5. Nuget не распознает изменения, пока вы не сделаете это.

Наконец, вам, возможно, придется использовать «Диспетчер пакетов Nuget для решений», чтобы удалить, а затем переустановить пакеты. Я не знаю, было ли это побочным эффектом скрипта Powershell, который я запустил, или просто способом вернуть NuGet в рабочее состояние. После того, как я выполнил все эти шаги, моя сложная архитектура сборки работала без сбоев при выводе новых пакетов, когда я проверял проекты из TFVC.

Quarkly
источник
1
Зачем удалять файл nuget.targets, получу ли я непротиворечивую сборку, если ее не хватает?
Фроде Нильсен
1
Похоже, что цели теперь интегрированы в IDE, а также функцию, которую предоставляет nugget.exe. Единственное, что вам еще нужно, это конфигурация.
Quarkly
1
В дополнение к шагам, упомянутым DRAirey, мне пришлось сделать следующее: 1) Вместо пакетов $ \ .. \ .. \ .. \ .. \ Packages, использованных ../../ (соглашение о родительском пути Windows, нет $ в начале 2) Сохраните решение, закройте и снова откройте файл nuget.config, который можно прочитать и почитать при установке пакета
Судханшу Мишра
Это помогло для моего нового проекта VS2015, где я применил пакеты dir, и другие члены команды не смогли восстановить из-за зависимостей NuGet.
azec-pdx
1
Вам нужно перезапустить Visual Studio после выполнения шага 5. Nuget не распознает изменения, пока вы не сделаете это.
Барри Колебанк-младший
35

При желании вы можете удалить все папки из папки «пакеты» и выбрать «Управление пакетами NuGet для решения ...». В этом случае кнопка «Восстановить» появляется в пакетах NuGet Windows.

Иван Бранец
источник
1
Попробуйте закрыть и снова открыть окно пакетов NuGet после удаления папок внутри папки «пакеты».
Иван Бранец
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/reinstall-and-updating-packages

Джек миллер
источник
Большое спасибо, у меня была похожая проблема. Я только что решил мою проблему с помощью вашей процедуры. Большое спасибо
МакЭли
То же самое здесь, единственный, который работал и не нуждается в куче вещей, написанных повсюду
Харви Лин
Самый полезный ответ здесь!
Нео
13

Если у вас возникли проблемы или отсутствуют какие-либо пакеты, вы можете просто щелкнуть правой кнопкой мыши в своем проекте и выбрать « Управление пакетами NuGet для решения ... ». После этого откроется экран, где вы увидите строку меню с надписью «Восстановить»: Восстановить

Нажмите на нее, и необходимые пакеты будут установлены автоматически.
Я считаю, что это то, что вы ищете, это решило мои проблемы.

Yenthe
источник
3
Но это помогает, только если появляется эта панель предупреждений, но не в моем случае.
Николас Петерсен
2
Шаг, который устанавливает пакет вручную, полностью пропускает точку автоматического восстановления.
Quarkly
Я считаю, что это, вероятно, должен быть принятый ответ, это та же функциональность
user25064
1
Я смог увидеть вариант восстановления, щелкнув правой кнопкой мыши по решению. Это было в разделе «Управление пакетами NuGet для решения». Сделал трюк для меня.
Дэрил
1
У меня не работает - я вижу предупреждения в решении относительно отсутствующих пакетов nuget, но управление пакетами nuget не дает мне возможности загрузить их. Я также не могу строить и восстанавливать. Также команда восстановления ничего не делает.
Маркус
7

Используйте эту команду для восстановления всех пакетов

dotnet restore
Абдус Салам Азад
источник
Работает отлично
JP..t
6

При обновлении проектов с пакетами nuget с Vx20XX до VS2015 у вас могут быть проблемы с пакетами nuget.

Пример сообщения об ошибке: Этот проект ссылается на пакеты NuGet, которые отсутствуют на этом компьютере. Включите NuGet Package Restore, чтобы загрузить их.

Обновление 2016-02-06: у меня была ссылка на информацию, но она больше не работает. Я подозреваю, что недавний путь решил проблему ???

Я исправил свою проблему, написав небольшую программу, которая выполняет MSBuild-Integrated восстановление пакета по сравнению с автоматическим восстановлением пакета

Вы можете скачать исполняемый файл инструмента здесь .

Пожалуйста, дайте мне знать результат :-)!

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

Код в качестве ссылки:

<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» и посмотреть, может ли быть затронут ваш файл? Извините за этот плохой ответ, я не помню, что я кодировал :-(! Я просто знаю, что дважды успешно использовал на 2 разных компьютерах.
Эрик Оуэлле
5

Зайдите в References в visual studio и посмотрите, какие пакеты отсутствуют. Теперь щелкните правой кнопкой мыши на Solution in Visual и выберите открытую папку в проводнике. Теперь откройте папку пакетов и удалите отсутствующую папку пакетов. Откройте визуальную студию и просто постройте решение. все недостающие пакеты будут восстановлены. Пожалуйста, пометьте это как ответ, если я помог.

Сандип Джайсвал
источник
4

Я предполагаю, что для проекта asp.net 4 мы переходим к автоматическому восстановлению, поэтому в этом нет необходимости. Для старых проектов я думаю, что нужно немного поработать над конверсией.

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

Лука Морелли
источник
Возможно ты прав. Я просто попытался создать проект, используя те же самые шаги в VS2013, и там было «Включить восстановление пакета Nuget». Спасибо за ссылку, сейчас проверю.
Дэн Болье
4

Этот подход работал для меня:

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

Теперь вы также включили восстановление пакета nuget в VS2015.

Håkon Seljåsen
источник
4

Я столкнулся с той же проблемой при попытке создать пример проекта gplus-quickstart-csharp-master .

Я внимательно посмотрел сообщение об ошибке и нашел способ обойти эту ошибку, надеюсь, это поможет.

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

Наслаждаться !!

Маной Верма
источник
4

Решение Ивана Бранец , по сути, исправило это для меня, но можно поделиться некоторыми подробностями.

В моем случае я был в VS 2015 с использованием автоматического восстановления пакета и TFS . Это все по умолчанию.

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

Вы узнаете это, потому что ссылка будет иметь желтый восклицательный знак о том, что она не разрешена.

Таким образом, решение об удалении папки внутри пакетов устраняет проблему блокировки восстановления пакетов. Тогда вы можете щелкнуть правой кнопкой мыши на верхнем уровне решения, чтобы получить возможность восстановить пакеты , и теперь это должно работать.

Greg
источник
4

Закрыть VS. Удалить все в папке пакетов. Повторно откройте свое решение. Щелкните правой кнопкой мыши по своему проекту, выберите «Управление пакетами Nuget ...». В верхней части окна «Диспетчер пакетов Nuget» появится желтая полоса с просьбой восстановить пакеты. Это сработало для меня.

Мандип Джанджуа
источник
3

Консоль диспетчера пакетов (Visual Studio, Инструменты> Диспетчер пакетов NuGet> Консоль диспетчера пакетов): выполните команду Update-Package -reinstall -ProjectName, где указано имя затронутого проекта в том виде, в каком оно отображается в обозревателе решений. Используйте Update-Package -reinstall для восстановления всех пакетов в решении. Смотрите Обновление-Пакет. При желании вы также можете переустановить один пакет.

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

Andreas
источник
1

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

Katushai
источник
1

Если кто-то еще обнаружит эту проблему в Visual Studio 2017, убедитесь, что проект открывается с помощью файла .sln, а не папки, так как Visual Studio не подберет настройки, если они открыты по папке. Это происходит по умолчанию, если вы используете онлайн-сервисы Visual Studio для git.

разъем
источник
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 не создает проект, для которого мне пришлось использовать команду / restore
Кишан Вайшнав
1

Если ничего не помогает (или, возможно, до этого), вы можете проверить и посмотреть, является ли NuGet источником пакета. Я установил VS2017, и он не был там по умолчанию. Я думал, что это было немного странно.

  1. Инструменты - Диспетчер пакетов NuGet - Настройки диспетчера пакетов
  2. Нажмите «Источники пакетов» в левой части диалогового окна.
  3. Используйте знак плюс (+) для добавления Nuget URL: https://api.nuget.org/v3/index.json
douglas.kirschman
источник
0

Мне пришлось удалить пакет папки закрыть и заново открыть (VS2015) решение. Я не мигрировал, и у меня не было пакетов, проверенных в системе контроля версий. Все, что я могу сказать, это что-то напутало, и это исправило это.

Крис Хаммонс
источник
0

Помогли мне через Инструменты >>> Диспетчер пакетов Nuget >>> Общие, затем отметьте опцию Разрешить Nuget загружать отсутствующий пакет и автоматически проверять отсутствующие пакеты во время сборки в Visual Studio .

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

Анжан Кант
источник
0

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

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

Инструменты> Диспетчер пакетов NuGet> Консоль диспетчера пакетов

MOH3N
источник
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

Перепробовав почти все предложенные здесь решения, я закрыл VS. Когда я снова открыл его, через несколько секунд все вернулось, чтобы быть в порядке ...

Андреа Антонангели
источник
-4

Еще проще, добавьте папку .nuget в свое решение, и появится «Восстановить пакеты Nuget» (не уверен, что для его работы должен присутствовать nuget.exe).

Paxton
источник