Как получить System.Web.Http, Version = 5.2.3.0?

88

Я только что создал проект MVC5 и добавил несколько пакетов из nuget, но затем, когда я скомпилировал проект, я получил эту ошибку. Похоже, один из пакетов действительно зависит от system.web.http версии 5.2.3.0, которую я нигде не мог найти. Интересно, а как получить последнюю версию system.web.http?

Ошибка 2 Сборка 'System.Web.Http.WebHost, Version = 5.2.3.0, Culture = нейтральный, PublicKeyToken = 31bf3856ad364e35' использует 'System.Web.Http, Version = 5.2.3.0, Culture = нейтральный, PublicKeyToken = 31bf3856ad364e35', который имеет версия выше, чем указанная сборка 'System.Web.Http, Version = 5.0.0.0, Culture = нейтральный, PublicKeyToken = 31bf3856ad364e35' 
d: \ Backup 2014-12-25 \ Website-Projects \ www.ptsol.com.au \ packages \ Microsoft.AspNet.WebApi.WebHost.5.2.3 \ lib \ net45 \ System.Web.Http.WebHost.dll
Джон Хадикусумо
источник

Ответы:

117

В консоли диспетчера пакетов

Install-Package Microsoft.AspNet.WebApi.Core -version 5.2.3

Роман Патутин
источник
Я сделал это, но все еще выдал ту же ошибку <br/> <pre> PM> install-package microsoft.aspnet.webapi.core -version 5.2.3 Попытка разрешить зависимость 'Microsoft.AspNet.WebApi.Client (≥ 5.2.3 ) '. Попытка разрешить зависимость Newtonsoft.Json (≥ 6.0.4). «Microsoft.AspNet.WebApi.Core 5.2.3» уже установлен. На сайте www.ptsol.com.au уже есть ссылка на «Microsoft.AspNet.WebApi.Core 5.2.3». </pre>
Джон Хадикусумо,
4
@JohnHadikusumo сделай это для всех своих проектов. Похоже, у вас есть зависимый проект с более старой версией.
Рэп
Да, это сработает. Внимательно прочтите свои Web.config и packages.config до и после выполнения этой команды, и вы увидите, что изменилось.
AlfredBr
Решил мою проблему.
Phon Soyang
19

Один из способов исправить это - изменить перенаправление сборки в файле web.config.

Измените следующее:

<dependentAssembly>
        <assemblyIdentity name="System.Net.Http.Formatting" publicKeyToken="31bf3856ad364e35" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-4.0.0.0" newVersion="4.0.0.0" />
</dependentAssembly>

к

<dependentAssembly>
        <assemblyIdentity name="System.Net.Http.Formatting" publicKeyToken="31bf3856ad364e35" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-5.2.3.0" newVersion="4.0.0.0" />
</dependentAssembly>

Таким образом, атрибут oldVersion должен измениться с «...- 4.0.0.0» на «...- 5.2.3.0».

Bracher
источник
Это сработало для меня. У нас была такая же bindingRedirectнастройка, <bindingRedirect oldVersion="0.0.0.0-5.2.3.0" newVersion="5.2.3.0" />но мы изменили ее, чтобы использовать 4.0.0.0. По-прежнему не имеет смысла для меня, потому что следует использовать DLL пакета NuGet, а не версию GAC, но эй, это сработало ... так что спасибо!
jamiebarrow
8

Я сделал Install-Package Microsoft.AspNet.WebApi.Core -version 5.2.3это, но все равно не сработало. Затем заглянул в папку bin моего проекта и увидел, что там все еще был старый файл System.Web.Mvc.

Поэтому я вручную скопировал новый файл из пакета в папку bin. Потом я снова заработал.

Боб Кури
источник
7

Установочный пакет Microsoft.AspNet.WebApi.Core -version 5.2.3

Затем в проекте Добавить ссылку -> Обзор. Нажмите кнопку обзора и перейдите к C: \ Users \ UserName \ Documents \ Visual Studio 2015 \ Projects \ ProjectName \ packages \ Microsoft.AspNet.Mvc.5.2.3 \ lib \ net45 и добавьте необходимый файл .dll.

Виталий Сиаменау
источник
7

Установленные вами пакеты представили зависимости для dll версии 5.2.3.0, как показал пользователь Bracher выше. Microsoft.AspNet.WebApi.Cors - это пример пакета. Путь, который я выберу, - обновить проект MVC до любых установленных пакетов:

Install-Package Microsoft.AspNet.Mvc -Version 5.2.3

https://www.nuget.org/packages/microsoft.aspnet.mvc

Дуг Уайли
источник
3

У меня сработало удаление и повторная установка пакета NuGet.

  1. Удалите все старые ссылки из проекта.

Выполните это в консоли диспетчера пакетов:

  1. UnInstall-Package Microsoft.AspNet.WebApi.Core -version 5.2.3
  2. Install-Package Microsoft.AspNet.WebApi.Core -version 5.2.3
Рам Кишор К
источник
Только это решило мою проблему. Я сделал так много, и выиграть все было так просто.
Джордж Ланец