Пакет Nuget установлен, но ссылки не разрешены

У меня есть мультипроектное решение с пакетами Prism Nuget, установленными в нескольких проектах. Затем я попытался добавить пакет расширений Prism Mef в один из проектов с помощью пользовательского интерфейса диспетчера пакетов Nuget (я уже добавил его в один из других проектов).

В первый раз, когда я попытался добавить пакет, он не смог установить одну из зависимостей, никакой конкретной причины ошибки, просто "не удалось". Итак, я установил его второй раз, все вроде бы нормально, ошибок не сообщалось, но некоторые ссылки не помогли.

Итак, я удалил пакет и все зависимости и установил его снова. Снова все оказалось нормально, но больше ссылок не разрешают.

Я пытался удалить и установить пакет несколько раз, но теперь каждый раз получаю один и тот же результат.

У меня была эта проблема много раз, и я знаю, что она не специфична для пакета Prism, так как у меня была она с множеством разных пакетов.

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

Я провел поиск в Интернете и не нашел хорошего объяснения причины проблемы или способа ее решения.

Кто-то на работе полностью отказывается иметь какое-либо отношение к Нюгетту, поскольку у него так много таких проблем, но я полон решимости заставить его работать!

10 ответов

Решение

Я просто закрыл Visual Studio и снова открыл его, и ссылки разрешены...!

В консоли диспетчера пакетов выполните следующую команду:

Update-Package -reinstall

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

Если вы знаете, что вам не хватает конкретной ссылки:

Update-Package -reinstall <Package-Name>

Вы должны следовать этой процедуре.

  1. Update-пакет
  2. Update-Package -reinstall
  3. Перезапустите Visual Studio.

Возможно, вы захотите сравнить версию пакета.NET с вашим проектом.

У меня был экземпляр, где мой проект был.NET 4.6.1, и пакет, который я пытался установить, использовал версию 4.6.2. После обновления моего проекта до той же версии.NET, ссылка появилась.

Удалить все <assemblyBinding> ссылки из вашего файла.config, затем выполните эту команду из диспетчера пакетов Nuget:

Get-Project -All | Add-BindingRedirect

Вот как я это исправил.

Я работал над устаревшим проектом .NET framework (используя <Reference Include... скорее, чем PackageReference). В .dlls ссылались на относительный путь, который не был разрешен.

Исправлено изменением на абсолютные пути, построением, а затем возвращением к исходным относительным путям.

Например:

          <Reference Include="My.Package">
      <HintPath>..\..\packages\My.Package.dll</HintPath>
    </Reference>

Изменился на:

          <Reference Include="My.Package">
      <HintPath>C:\Users\will\Documents\MySolution\packages\My.Package.dll</HintPath>
    </Reference>

Затем построили и изменили обратно на относительный путь, и сборка все еще работала.

Я недавно столкнулся с этой ошибкой на Visual Studio 2012, решение для меня было удалить файл.nupkg из кеша Nuget. Расположение кеша Nuget можно найти в настройках Nuget> general > browse.

Примечание: я не очистил кеш, я просто удалил определенный файл из каталога кеша и переустановил пакет nuget.

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

Я перепробовал все остальные варианты, но мою проблему ничего не решило. Что решило проблему, так это просмотр информации о пакете на веб-сайте nuget и проверка того, с какими версиями .Net Framework работают разные версии пакета.

К сожалению, в последней стабильной версии пакета не была указана моя версия .Net Framework, поэтому я удалил ее и установил вторую последнюю версию, в которой была указана моя версия .Net Framework, и все работало как положено.

Просто, но неожиданно (по крайней мере для меня).

Для меня перестройка проекта решила проблему. Щелкните правой кнопкой мыши Project -> Rebuild.

Другие вопросы по тегам