Visual Studio не загружает DLL для пакета NuGet

У нас есть несколько пакетов NuGet на нашем локальном сервере TeamCity и используйте их в различных проектах. Я только что вернулся из отпуска, схватил последнюю версию из исходного кода и попытался перестроить, только чтобы получить кучу ошибок компиляции из-за отсутствия DLL.

Кажется, что DLL для одного из наших пакетов не загружалась из NuGet. Я попытался запустить новый проект WPF и добавить три пакета. Все три отображаются в файле packages.config, но только два из них загружают библиотеки DLL. Третий загружает только файл *.pdb.

У кого-то еще в команде есть эта проблема, и я попробовал ее на своей запасной машине, и она загрузилась нормально, так что это похоже на проблему с моей машиной, установкой Visual Studio или NuGet. Однако, поскольку я могу без проблем захватывать другие пакеты из одного источника, это не похоже на глобальную проблему с VS или NuGet.

Я понимаю, что не так много, но я не знаю, что еще рассказать вам. Если кто-нибудь может что-нибудь предложить, я был бы очень благодарен. Поскольку источник пакета является нашим собственным, я не могу поделиться этим, к сожалению.

Я использую Visual Studio Enterprise 2015 Update 3 (сборка 14.0.25424.00) с диспетчером пакетов NuGet версии 3.4.4.1321 на 64-разрядной версии Windows 10 Pro (версия 1607, сборка 14393.105). Если есть что-то еще, что я могу добавить, пожалуйста, дайте мне знать.

Ответ 1

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

Сначала закройте все экземпляры Visual Studio. Это вообще хорошая идея, когда вы делаете что-либо вне VS, что повлияет на то, что думает VS.

Как вы видели, вам нужно использовать версию командной строки nuget для очистки кеша. Ваша первая проблема заключается в том, чтобы найти это, поскольку это не очевидно. Вторая проблема (если вы ее ищите) состоит в том, что вы найдете множество из них: одну в папке .nuget в каждом решении.

Самый простой способ обойти это - загрузить последнюю версию nuget.exe со своего веб-сайта. Сохраните его где-нибудь вдали от любых проектов, если он вам понадобится.

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

nuget update -self

Как только вы это сделаете, вы можете очистить кеш, как указано jessehouwing...

nuget.exe locals all -clear

При следующем запуске Visual Studio вы должны обнаружить, что все работает так, как ожидалось. Возможно, вам придется удалить и переустановить пакеты, чтобы они все работали, но с очищенным кешем, который должен работать без проблем.

Надеюсь, что все ясно.

Ответ 2

Для блага поисковиков (так как это вызвало у меня некоторое разочарование).

У меня была похожая проблема, когда я переезжал на новую машину (Windows 10), Nuget (отлично на моей старой машине с Win10) сломал бы все, кроме dll.

Решение

  1. Перейдите в меню "Пуск" и введите "Разрешить приложение через брандмауэр Windows"
  2. Нажмите "Изменить настройки", затем "Разрешить другое приложение"
  3. Введите местоположение (я) Visual Studio (например, для VS 2017 - C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE, затем нажмите devenv.exe)
  4. Просто чтобы быть уверенным, я проверил как частные, так и публичные сети.
  5. Удалил папку с пакетами
  6. Пакет восстановить или пересобрать проект

Это исправило это для меня. Надеюсь, это поможет кому-то еще.

Ответ 3

Решил мою проблему, большое спасибо HockeyJ