У меня есть клиент Windows, который подключается к back-end SignalR 2.0, теперь я пытаюсь подключиться к серверу ASP.NET Web API 2.1.
Библиотека, которую я использую для связи с веб-api, зависит от Newtonsoft.Json 6.0.0.0, но Microsoft.AspNet.SignalR.Client 2.0.0.0, похоже, полагается на Newtonsoft. Json 4.5.0.0.
Так как это клиент Windows, dll файлы попадают в один и тот же каталог, и только одна из двух требуемых версий закончится на диске, иначе либо клиент signalr-клиент, либо HttpClient не смогут загрузить свою версию Newtonsoft.json dll.
Ошибка SignalR, если версия 6. * находится на диске:
Could not load file or assembly 'Newtonsoft.Json, Version=4.5.0.0,
Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed' or one of its
dependencies. The located assembly manifest definition does not match the
assembly reference.(Exception from HRESULT: 0x80131040)
Можно ли заставить SignalR использовать новую версию Newtonsoft или использовать обе версии в одном решении?
Имейте в виду, что я очень новичок в упаковке Nuget и неявных ссылках, которые, по-видимому, используют SignalR...
Решение: Я заменил ссылку Newtonsoft в моей клиентской библиотеке signalR с версией 6.0 и добавил перенаправление сборки, как описано ниже Kiran Challa, в библиотеку App.config, а также app.config исполняемого проекта, теперь обе библиотеки ищут и загрузите ту же самую сборку.