Конфликт зависимостей пакетов Nuget RavenDB и SignalR - PullRequest
10 голосов
/ 21 февраля 2012

Основной конфликт.

SignalR хочет Newtonsoft.Json версии 4.0.7 или выше, тогда как RavenDB хочет версию, равную 4.0.5. Что, очевидно, означает, что они не могут быть установлены рядом.

Таким образом, кроме загрузки исходного кода из одного из них и получения локально выясненных зависимостей, затем необходимо проверить созданный из них двоичный файл, существует ли возможный способ управления зависимостями с помощью NuGet и, возможно, просто пересылка Вызовы DLL (как Mvc делает с каждой новой версией, например)?

Ответы [ 2 ]

10 голосов
/ 21 февраля 2012

Существует даже более подходящий способ обойти этот конфликт. Поскольку .NET дает нам возможность перенаправлять сборки , почему бы не использовать его;)

Вы можете просто добавить что-то подобное в свой App.config (позаботьтесь, если уже есть сборкаBinding):

  <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), и он исправит это.

Кроме того, я выполнил запрос на получение сигнала в SignalR , чтобы запросить поддержку JSON.NET и в версии 4.0.5 (поскольку он должен быть обратно совместимым)

3 голосов
/ 21 февраля 2012

Мы столкнулись с той же проблемой несколько дней назад, и это неприятный вопрос. Мы обнаружили, что вы не можете управлять зависимостями с помощью NuGet. Вместо этого мы изменили SignalR для использования 4.0.5 и скомпилировали его локально.

...