Conflit de dépendance des packages RavenDB et SignalR Nuget
Question
Conflit de base.
SignalR veut Newtonsoft.Json version 4.0.7 ou supérieure tandis que RavenDB veut une version égale à 4.0.5.Ce qui signifie évidemment qu'ils ne peuvent pas être installés côte à côte.
Donc, en plus de télécharger le code source de l'un d'eux et d'obtenir les dépendances déterminées localement, puis de vérifier le binaire créé à partir de cela, y a-t-il un moyen possible de garder les dépendances gérées avec NuGet, et peut-être simplement de transmettre leAppels DLL (comme Mvc le fait à chaque nouvelle version par exemple)?
La solution
Nous avons rencontré le même problème il y a quelques jours et c'est un problème désagréable.Nous avons constaté que vous ne pouvez pas conserver les dépendances gérées avec NuGet.Au lieu de cela, nous avons changé SignalR pour utiliser 4.0.5 et l'avons compilé localement.
Autres conseils
Il existe une manière encore plus appropriée de contourner ce conflit. Puisque .NET nous donne la possibilité de rediriger les assemblys , pourquoi ne pas l'utiliser;)
Vous pouvez simplement ajouter quelque chose comme ça à votre App.config (faites attention s'il y a déjà un assemblyBinding placé):
<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>
Avec cet ensemble de redirection, vous pouvez simplement ajouter le package RavenDB et le package SignalR (chacun d'eux faisant référence à une autre version de JSON.NET) et il fait le correctif.
De plus, j'ai effectué une pull request sur SignalR pour demander la prise en charge de JSON.NET dans la version 4.0.5 aussi (car il devrait être rétrocompatible)