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

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

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

Я выбрал File> New Project и создал пустое веб-приложение ASP.NET . Я ищу этот пункт меню.

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

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

Это заняло слишком много времени, но я наконец нашел этот документ в разделе «Перенос решений MSBuild-Integrated для автоматического восстановления пакетов», и я смог решить проблему, используя описанные здесь методы.

  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)

     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}.    

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:

Этот файл конфигурации позволит вам консолидировать все ваши пакеты в одном месте, чтобы у вас не было 20 разных копий одного и того же пакета, плавающего в вашей файловой системе. Относительный путь будет изменяться в зависимости от архитектуры вашего каталога решений, но он должен указывать на каталог, общий для всех ваших решений.

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

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

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

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

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

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

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

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

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

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

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

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

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

              Root directory of projects               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; ///  /// 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 ///  namespace FixNuGetProblemsInVs2015 { ///  /// Interaction logic for MainWindow.xaml ///  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 elementsToRemove = new List(); 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"; } } } 

Как уже упоминалось Майком, в 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

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

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

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

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

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

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

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

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

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

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

Решение Ivan Branets – это, по сути, то, что исправлено для меня, но некоторые подробности можно было бы разделить.

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

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

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

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

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

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

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

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

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

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

Я использовал msbuild /t:restore .

Моя проблема была в MSBuild Итак, я последовал за ссылкой @Vinney Kelly : Перенос решений MSBuild-Integrated в автоматическое восстановление пакетов

а также…

Это сработало LIKE CHARM =]

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

Помог мне через Tools >>> Nuget Package Manager >>> General then tick option Позволяет Nuget загружать отсутствующий пакет и автоматически проверять отсутствующие пакеты во время сборки в visual studio .

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

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

  • Почему intellisense и предложение кода перестают работать, когда Visual Studio открыта?
  • Могу ли я записывать / воспроизводить macros в Visual Studio 2012/2013/2015/2017?
  • Выделение синтаксиса Visual Studio 2015 JSX / ES2015
  • Visual Studio показывает ошибки IntelliSense, но компиляции решений
  • Публикация в IIS, установка переменной среды
  • Visual Studio 2015 или 2017 не обнаруживает модульные тесты
  • Пакеты не загружаются после установки visual studio 2015 RTM
  • Запуск двух проектов сразу в Visual Studio
  • Visual Studio 2015 Сломанная razor Intellisense
  • Принудительное удаление Visual Studio 2015
  • Ошибка CMake на CMakeLists.txt: 30 (проект): не найдено CMAKE_C_COMPILER
  • Давайте будем гением компьютера.