2014-04-24 15 views
9

Kiedy zainstalowaliśmy poprzednią wersję Neo4jClient przez nuget, zobaczyliśmy, że Newtonsoft.Json w wersji 4.5.0.0 został zainstalowany jako zależność. Używamy również innych pakietów, które wymagają wersji 6.0.0.0 z Newtonsoft.Json, a kiedy je instalujemy, zastępują wersję 4.5.0.0.Nie można załadować pliku lub zespołu "Newtonsoft.Json.Net" (wyjątek od HRESULT: 0x80131040)

Kiedy zaczynamy naszą aplikację możemy uzyskać ten błąd:

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) 

Patrzyliśmy na wszystkich naszych configs i nic nie znalazłem odsyłania wersji 4.5.0.0, jednak po zrobieniu bliżej przyjrzeć Neo4jClient Znaleźliśmy to.

using ildasm.exe from visual studion tools

Oto 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> 

Usunęliśmy wszystkie pakiety, ponownie zainstalowane, oczyszczone i przebudowane, ale bez skutku. Czy to Neo4jClient powoduje to, czy problem występuje gdzie indziej?

UPDATE Co staraliśmy

  1. Usunięto wszystkie pakiety i ponownie zainstalowany
  2. oczyszczone i przebudowane roztworowi
  3. Zgromadzenie przekierować
  4. Tried szuka <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects> ale nie był w .csproj
+0

Czy znajduje on samo urządzenie? Dlatego spróbuj ustawić zespół jako: Copy local: true. –

+0

@ Mitulátbáti Domyślnie 'Kopiuj lokalnie' został ustawiony" true " –

+1

Domyślnie AutoGenerateBindingRedirects nie istnieje, możesz po prostu dodać go do pliku csproj –

Odpowiedz

11

Czy próbowałeś przekierowania wersji zestawu przez 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

Tak, zabawne jest jednak to, że mam dwa projekty w rozwiązaniu. Jeden to kod, a drugi testy. W testach dodano 'app.config', a główny projekt ma tylko' packages.config', który nie zawiera ''. –

+0

Następnie spróbuj ręcznie dodać plik app.config/web.config i wkleić tam przekierowanie? – ChrFin

+0

Może to być odpowiedź na moją sprawę, ale nie wyjaśnia DLACZEGO? Dlaczego muszę wykonać powiązanie - przekierować voodoo? Spróbuję teraz ... – Mzn

Powiązane problemy