2014-04-24 3 views
9

Quando abbiamo installato una versione precedente di Neo4jClient via nuget, abbiamo visto che Newtonsoft.Json versione 4.5.0.0 era installata come dipendenza. Usiamo anche altri pacchetti che richiedono la versione 6.0.0.0 di Newtonsoft.Json e quando li installiamo sovrascrive la versione 4.5.0.0.Impossibile caricare il file o l'assembly "Newtonsoft.Json.Net" (Eccezione da HRESULT: 0x80131040)

Quando iniziamo la nostra applicazione otteniamo questo errore:

Unhandled Exception: System.ServiceModel.FaultException`1[System.ServiceModel.Ex 
ceptionDetail]: Could not load file or assembly 'Newtonsoft.Json, Version=4.5.0. 
0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed' or one of its dependencies. 
The located assembly's manifest definition does not match the assembly referenc 
e. (Exception from HRESULT: 0x80131040) 

Abbiamo esaminato tutte le nostre configurazioni e hanno trovato nulla di riferimento versione 4.5.0.0, però dopo aver preso uno sguardo più da vicino il Neo4jClient abbiamo trovato questo.

using ildasm.exe from visual studion tools

Ecco la packages.config

<?xml version="1.0" encoding="utf-8"?> 
<packages> 
    <package id="AzureStorageClient" version="0.0.5.1829" targetFramework="net45" /> 
    <package id="CouchbaseNetClient" version="1.3.4" targetFramework="net45" /> 
    <package id="Elasticsearch.Net" version="1.0.0-beta1" targetFramework="net45" /> 
    <package id="Microsoft.Bcl" version="1.1.8" targetFramework="net45" /> 
    <package id="Microsoft.Bcl.Build" version="1.0.14" targetFramework="net45" /> 
    <package id="Microsoft.Net.Http" version="2.2.20" targetFramework="net45" /> 
    <package id="Neo4jClient" version="1.0.0.652" targetFramework="net45" /> 
    <package id="NEST" version="1.0.0-beta1" targetFramework="net45" /> 
    <package id="Newtonsoft.Json" version="6.0.2" targetFramework="net45" /> 
</packages> 

Abbiamo rimosso tutti i pacchetti, reinstallati, puliti e ricostruiti, ma senza alcun risultato. È questo il Neo4jClient che sta causando questo evento o il problema si vive da qualche altra parte?

UPDATE Quello che abbiamo cercato

  1. rimosso tutti i pacchetti installati e ri
  2. puliti e ricostruito soluzione
  3. Assemblea reindirizzare
  4. provato a cercare <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>, ma non era in Csproj
+0

Trova l'assemblaggio stesso? Quindi prova a impostare l'assembly come: Copia locale: vero. –

+0

@ Mitulátbáti 'Copy Local' è stato impostato troppo' true' per impostazione predefinita –

+1

AutoGenerateBindingRedirects non è lì per impostazione predefinita, è sufficiente aggiungerlo al file csproj –

risposta

11

Hai provato il reindirizzamento della versione dell'assembly tramite app.config/web.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-6.0.0.0" newVersion="6.0.0.0" /> 
     </dependentAssembly> 
    </assemblyBinding> 
</runtime> 
+0

Sì, la cosa divertente è che ho due progetti nella soluzione. Uno è il codice e l'altro i test. I test hanno aggiunto un 'app.config' e il progetto principale ha solo un' packages.config', che non include il ''. –

+0

Quindi provare ad aggiungere manualmente il file app.config/web.config e incollare il reindirizzamento lì dentro? – ChrFin

+0

Mentre questa potrebbe essere una risposta al mio caso, non spiega PERCHÉ? Perché devo fare il binding-redirect voodoo? Ci proverò ora ... – Mzn