Конфликт зависимости от конфликта RavenDB и SignalR Nuget
Основной конфликт.
SignalR хочет Newtonsoft.Json версии 4.0.7 или выше, в то время как RavenDB хочет версию, равную 4.0.5. Очевидно, что они не могут быть установлены бок о бок.
Таким образом, помимо загрузки исходного кода из одного из них и получения зависимостей, обнаруженных локально, необходимо проверить созданный из него двоичный файл, существует ли возможный способ сохранить зависимости, управляемые с помощью NuGet, и, возможно, просто переслать DLL-вызовы (например, Mvc делает с каждой новой версией)?
Ответы
Ответ 1
Мы столкнулись с тем же вопросом несколько дней назад, и это неприятно. Мы обнаружили, что вы не можете поддерживать зависимости, управляемые с помощью NuGet. Вместо этого мы изменили SignalR на использование 4.0.5 и скомпилировали его локально.
Ответ 2
Существует даже более подходящий способ обойти этот конфликт.
Поскольку .NET дает нам возможность перенаправить сборки, почему бы не использовать его;)
Вы можете просто добавить что-то подобное в свой App.config(позаботьтесь о том, что уже есть сборка):
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.0.8.0" newVersion="4.0.5.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
С помощью этого набора перенаправления вы можете просто добавить пакет RavenDB и пакет SignalR (каждый из них ссылается на другую версию JSON.NET), и он исправляет.
Кроме того, я сделал запрос pull on SignalR, чтобы запросить поддержку JSON.NET в версии 4.0.5 (так как он должен быть обратно совместимым )