Conflitto di dipendenza dal pacchetto ravendB e Signalr Nuget
Domanda
Conflitto di base.
SignalR vuole Newtsoft.json versione 4.0.7 o superiore mentre Ravendb vuole una versione pari a 4.0.5. Il che ovviamente significa che non possono essere installati fianco a fianco.
Quindi, oltre a scaricare il codice sorgente da uno di essi e far capire alle dipendenze localmente, quindi dover verificare il binario creato da quello, esiste un modo possibile per mantenere le dipendenze gestite con Nuget e forse solo in avanti le chiamate DLL ( Come fa MVC ad esempio con ogni nuova versione)?
Soluzione
Ci stavamo affrontando nello stesso problema qualche giorno fa e questo è cattivo. Abbiamo scoperto che non puoi mantenere le dipendenze gestite con Nuget. Invece, abbiamo cambiato SignalR per utilizzare 4.0.5 e lo abbiamo compilato localmente.
Altri suggerimenti
C'è anche un modo più appropriato di aggirare questo conflitto. Poiché .NET ci dà la possibilità Assemblee di reindirizzamento, perché non usarlo;)
Puoi semplicemente aggiungere qualcosa del genere alla tua app.config (Abbi cura se c'è già un assembly 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>
Con questo set di reindirizzamento puoi semplicemente aggiungere il pacchetto ravendB e il pacchetto SignalR (ognuno di essi riferito a un'altra versione di JSON.NET) e fa la correzione.
Inoltre ho fatto un Pull request su Signalr Per richiedere il supporto per JSON.NET anche nella versione 4.0.5 (poiché dovrebbe essere compatibile all'indietro)