2017-03-10 2 views
16

Ich portiere eine Net Framework 4 DLL zu Net Core. Wenn ich mein Unit-Tests-Projekt portiere, bekomme ich eine Ausnahme, die einige spezifische Tests ausführt (nicht alle).Konnte Datei oder Assembly nicht laden System.Net.Http Version 4.1.1.0

System.IO.FileLoadException: Konnte Datei oder Assembly 'System.Net.Http, Version = 4.1.1.0, Culture = neutral, PublicKeyToken = b03f5f7f11d50a3a' laden oder eine ihrer Abhängigkeiten. Die Manifestdefinition der lokalisierten Assembly stimmt nicht mit der Assemblyreferenz überein. (Ausnahme von HRESULT: 0x80131040)

Dies ist project.json für meine dll

{ 
 
    "version": "1.0.0-*", 
 

 
    "dependencies": { 
 
    "log4net": "2.0.7", 
 
    "NETStandard.Library": "1.6.1", 
 
    "Newtonsoft.Json": "9.0.1", 
 
    "StackExchange.Redis": "1.2.1" 
 
    }, 
 

 
    "frameworks": { 
 
    "netstandard1.6": { 
 
     "imports": "dnxcore50" 
 
    } 
 
    } 
 
}

Und das ist Packages.config für die Unit-Tests projizieren

<packages> 
 
    <package id="Castle.Core" version="4.0.0" targetFramework="net462" /> 
 
    <package id="log4net" version="2.0.7" targetFramework="net462" /> 
 
    <package id="Microsoft.Win32.Primitives" version="4.0.1" targetFramework="net462" /> 
 
    <package id="Moq" version="4.7.1" targetFramework="net462" /> 
 
    <package id="Newtonsoft.Json" version="9.0.1" targetFramework="net462" /> 
 
    <package id="StackExchange.Redis" version="1.2.1" targetFramework="net462" /> 
 
    <package id="System.Diagnostics.DiagnosticSource" version="4.0.0" targetFramework="net462" /> 
 
    <package id="System.IO" version="4.1.0" targetFramework="net462" /> 
 
    <package id="System.IO.FileSystem" version="4.0.1" targetFramework="net462" /> 
 
    <package id="System.IO.FileSystem.Primitives" version="4.0.1" targetFramework="net462" /> 
 
    <package id="System.IO.FileSystem.Watcher" version="4.0.0" targetFramework="net462" /> 
 
    <package id="System.Linq" version="4.1.0" targetFramework="net462" /> 
 
    <package id="System.Net.Http" version="4.1.1" targetFramework="net462" /> 
 
    <package id="System.Net.NameResolution" version="4.0.0" targetFramework="net462" /> 
 
    <package id="System.Runtime" version="4.1.0" targetFramework="net462" /> 
 
    <package id="System.Runtime.Extensions" version="4.1.0" targetFramework="net462" /> 
 
    <package id="System.Security.Cryptography.Algorithms" version="4.2.0" targetFramework="net462" /> 
 
    <package id="System.Security.Cryptography.Encoding" version="4.0.0" targetFramework="net462" /> 
 
    <package id="System.Security.Cryptography.Primitives" version="4.0.0" targetFramework="net462" /> 
 
    <package id="System.Security.Cryptography.X509Certificates" version="4.1.0" targetFramework="net462" /> 
 
    <package id="System.Text.RegularExpressions" version="4.1.0" targetFramework="net462" /> 
 
    <package id="System.Threading.Thread" version="4.0.0" targetFramework="net462" /> 
 
</packages>

+0

Versuchen Sie 'Dotnet Restore' –

+0

@ J.Doe immer noch fehlgeschlagen – Jawen

Antwort

20

es behoben, durch System.Net.Http 4.3.1

+2

Entfernt von wo? – Maritim

+1

Ich musste System.Diagnostics.DiagnosticSource nicht entfernen, nur das Aktualisieren von System.Net.Http löste es für mich! –

+0

Wie hast du es aktualisiert? –

1

Aktualisierung ich dieses Problem hatte, während ich auf einander je 10 Projekte hatten. Ich reparierte das, indem ich die Version hinzufügte, nach der es in einem der Projekte verlangte, die abhängig waren. Es wurde nicht für die Kompilierung benötigt, aber es scheint, dass das Hinzufügen, Fixieren der Version in anderen Projekten während der Wiederherstellung. So war es:

Datei oder Assembly nicht geladen werden konnte 'System.Net.Http, Version = 4.1.1.0, Culture = neutral, PublicKeyToken = b03f5f7f11d50a3a' oder einem seiner Abhängigkeiten. Die angegebene Datei wurde vom System nicht gefunden.

Dann:

Datei oder Assembly nicht geladen werden konnte 'System.Net.Http, Version = 4.1.1.1, Culture = neutral, PublicKeyToken = b03f5f7f11d50a3a' oder einem seiner Abhängigkeiten. Die angegebene Datei wurde vom System nicht gefunden. So

Ich habe "System.Net.Http": "4.1.1", in einem Projekt ..

, die tatsächlich das Problem behoben, während es 8 Projekte gestellt.

3

Mein Problem war, dass mein Dienst eine referenzierte Assembly hatte, die einen Verweis auf eine neuere Version von System.Net.Http hatte. Ich habe das Problem gelöst, indem ich System.Net.Http im Dienst aktualisiert habe.

7

Ich habe das Problem, und erkannte, dass es war, weil ich zwei verschiedene Referenzen hatte. eine Referenz stammte von meiner Projektbibliothek, und die zweite war eine Abhängigkeit von einer .Net-Standardbibliothek und daher ein Nuget-Paket. Die Schritte zu lösen waren die folgenden:

  • Entfernen Sie den Verweis auf System.Net.Http (Projekt => Verweis hinzufügen => die Referenz entfernen).
  • Halten Sie die Nuget-Pakete System.Net und System.Net.Http
  • Führen Sie Update-Package –reinstall System.Net.Http, um die Referenz zurückzuholen.

Jetzt funktioniert es wieder. :)

0

Ich bin mit Jean einverstanden. Entfernen Sie die Referenz zur Assembly und fügen Sie eine neue Referenz über Nuget hinzu! Die tatsächliche System.Net.Http-Version spielt keine Rolle. Nach dem Entfernen von Verweis auf die Montage funktioniert alles gut, Version 4.3.2

Verwandte Themen