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)?

È stato utile?

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)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top