У меня есть решение и проект в Visual Studio 2012.
У проекта есть файл packages.config
в корне проекта.
Для целей этого вопроса, давайте предположим, что я случайно удалил эти библиотеки из References
раздела моего проекта.
При входе в диспетчер пакетов NuGet интерфейс все еще сообщает о галочке рядом с этими пакетами, указывая, что они установлены.
Единственный способ увидеть, как исправить эту ситуацию, - это удалить все записи, из-за packages.config
которых проблема интерфейса NuGet сообщит о них как о установленных, и заново добавить каждую.
Есть ли умнее? Я надеялся, что включение «enable nuget для восстановления отсутствующих пакетов» решит эту проблему, но, похоже, ничего не делает.
Вам необходимо включить восстановление пакета NuGet на уровне решения VS, чтобы восстановить отсутствующий пакет.
источник
В случае, если это кому-то поможет, для меня ничего из вышеперечисленного было недостаточно. Я все еще не мог построить, VS все еще не мог найти ссылки. Ключ был просто закрыть и снова открыть решение после восстановления пакетов.
Вот сценарий (с использованием Visual Studio 2012):
Вы открываете решение, в котором отсутствуют пакеты. Ссылки показывают, что VS не может их найти. Есть много способов восстановить недостающие пакеты, в том числе
nuget restore
если у вас установлена командная строка nugetНо независимо от того, какой подход, эти ссылки все равно будут показаны как отсутствующие. И когда вы построите это не удастся. Вздох. Однако, если вы закроете решение и снова откроете его, теперь VS
<HintPath>
снова проверяет эти симпатичные s, обнаруживает, что пакеты вернулись туда, где они принадлежат, и все в порядке с миром.Обновить
Visual Studio все еще не видит, что у вас есть пакет? По-прежнему показывает ссылку, которую он не может решить? Убедитесь, что версия восстановленного вами пакета точно такая же, как
<HintPath>
в вашем файле .csproj. Даже незначительный номер исправления ошибки (например, с 1.10.1 по 1.10.2) приведет к сбою ссылки. Вы можете исправить это либо путем непосредственного редактирования вашего csproj xml, либо путем удаления ссылки и создания новой, указывающей на недавно восстановленную версию в каталоге пакетов.источник
.csproj
файла, чтобы убедиться, что номера версий соответствуют мне. Спасибо!Хотя решение, предоставляемое @jmfenoll, работает, оно обновляется до последних пакетов. В моем случае, установив beta2 (предварительный выпуск), он обновил все библиотеки до RC1 (в котором была ошибка). Таким образом, вышеуказанное решение выполняет только половину работы.
Если вы находитесь в той же ситуации, что и я, и вы хотите синхронизировать ваш проект с точной версией пакетов NuGet, которые вы / или указали в своем
packages.config
, то этот сценарий может вам помочь. Просто скопируйте и вставьте его в консоль диспетчера пакетовИ затем выполните это с отдельным именем пакета как
или для всех пакетов, таких как
Кредиты идут к Дэну Хейвуду и его сообщению в блоге .
источник
Следующий скрипт может быть запущен в окне консоли диспетчера пакетов и удалит все пакеты из каждого проекта в вашем решении перед их переустановкой.
Это снова запустит скрипт установки каждого пакета, который должен восстановить отсутствующие ссылки на сборки. К сожалению, все остальное, что могут сделать установочные скрипты - например, создание файлов и изменение настроек - также повторится. Возможно, вы захотите начать с чистой рабочей копии и использовать инструмент SCM, чтобы выбрать, какие изменения в вашем проекте оставить, а какие проигнорировать.
источник
Я добавил библиотеки DLL вручную. Щелкните правой кнопкой мыши на References в проекте, выберите Add Reference и затем в диалоговом окне нажмите кнопку Browse. Библиотеки NuGet находятся в каталоге пакетов решения. Чтобы получить их имена, вы можете щелкнуть правой кнопкой мыши по ссылкам в другом проекте, который работает правильно, выбрать свойства и посмотреть в свойстве path.
источник
В Visual Studio 2015 (Soulution находится под контролем исходного кода, MVC-Project), csano
Update-Package -Reinstall -ProjectName Your.Project.Name
работал, но он испортил некоторые блокировки записи.Я должен был удалить «пакеты» -Folder вручную раньше. (Похоже, он заблокирован из-за контроля над источниками).
Также мне пришлось переустановить MVC-пакет из диспетчера пакетов NuGet.
источник
Этот сценарий переустанавливает все пакеты проекта, не портя зависимости и не устанавливая зависимости, которые могли быть удалены с помощью намерения. (Больше для их разработчиков пакета части.)
источник
На всякий случай это кому-то поможет - в моем сценарии у меня есть несколько общих библиотек (которые имеют свои собственные проекты / решения TFS), которые все объединены в одно решение.
Nuget успешно восстановит проекты, но DLL будет отсутствовать.
Основная проблема заключалась в том, что, хотя ваше решение имеет собственную папку пакетов и правильно восстановило их в этой папке, файл проекта (например, .csproj) ссылается на другой проект, который может не иметь загруженного пакета. Откройте файл в текстовом редакторе, чтобы увидеть, откуда приходят ваши ссылки.
Это может происходить при управлении пакетами в разных связанных общих решениях - поскольку вы, вероятно, хотите убедиться, что все библиотеки DLL находятся на одном уровне, вы можете установить это на верхнем уровне. Это означает, что иногда он будет искать совершенно другое решение для указанной библиотеки DLL, и поэтому, если у вас не все проекты / решения загружены и не обновлены, вы можете столкнуться с вышеуказанной проблемой.
источник
Я должен согласиться с @Juri, что чрезвычайно популярный ответ jmfenoll не является полным. В случае неработающих ссылок я утверждаю, что большую часть времени вы не хотите обновляться до последней версии , а только исправляете ссылки на текущие версии, которые вы используете. И Юри предоставил удобную функцию
Sync-References
для этого.Но мы можем пойти немного дальше, позволяя гибко фильтровать проект и пакет:
источник
У меня была такая же проблема с отсутствующими ссылками. Ниже моего сценария:
Все номера версий в проекте и пакетах совпадают, восстановление nuget (во всех отношениях) не работает.
Как я это исправил: просто удалите папки пакета в корне решения и выполните восстановление nuget. На этом этапе DLL правильно загружены и могут быть добавлены для отсутствующих ссылок.
источник
Я слишком сильно страдал от этой проблемы, в моем случае была проверена загрузка отсутствующего NuGet (но он не восстанавливает их), и я не могу удалить и переустановить, потому что я изменил некоторые из установленных пакетов ... так:
Я только что очистил кеш и перестроил и все заработало. (Tools-Option-Nuget Package Manager - Общие сведения)
Также эта ссылка помогает https://docs.nuget.org/consume/package-restore/migrating-to-automatic-package-restore .
источник
Удалите все пакеты и удалите зависимости
Очистить папку пакетов в корне проекта
Скопируйте файл модификации.config в корневую папку веб-сайта.
Запустите этот код, чтобы восстановить проект
источник