2016-07-05 24 views
6

Ich versuche, die Komponententests in meiner .NET Core 1.0-Lösung auszuführen. Wenn ich einen leeren Test mache, funktioniert es gut. Doch sobald ich versuche, neue Instanz von ApplicationDbContext zu erstellen schlägt der Test fehl mit folgenden Ausnahme:xunit und System.Interactive.Async

System.IO.FileLoadException : Could not load file or assembly 'System.Interactive.Async, Version=3.0.0.0, Culture=neutral, PublicKeyToken=94bc3704cddfc263'. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040) 
    Stack Trace: 
     at Microsoft.EntityFrameworkCore.Infrastructure.EntityFrameworkServiceCollectionExtensions.AddQuery(IServiceCollection serviceCollection) 
     at Microsoft.EntityFrameworkCore.Infrastructure.EntityFrameworkServiceCollectionExtensions.AddEntityFramework(IServiceCollection serviceCollection) 
     at Microsoft.EntityFrameworkCore.Internal.ServiceProviderCache.<>c__DisplayClass4_0.<GetOrAdd>b__1(Int64 k) 
     at System.Collections.Concurrent.ConcurrentDictionary`2.GetOrAdd(TKey key, Func`2 valueFactory) 
     at Microsoft.EntityFrameworkCore.DbContext..ctor(DbContextOptions options) 
(2 more stack trace lines from my code) 

nicht sicher, warum die System.Interactive.Async wird überhaupt benötigt, aber ich hinzugefügt, um es als Abhängigkeit zu meinem Testprojekt Die DLL scheint jedoch nicht in den Ordner bin \ Debug \ netcoreapp1.0 kopiert zu werden. Wenn ich es dort manuell kopiere, wirkt es genau gleich. Irgendwelche Ideen, was kann ich noch tun, damit es funktioniert?

+0

Haben Sie dies zu Ihrer Test-JSON-Datei "portable-net45 + win8" hinzugefügt? –

+2

Bitte poste etwas Code. –

+0

Das gleiche Problem, aber aus meiner Business-Logik-Klasse. Ich habe portable-net45 + win8 in meinen project.json Frameworks importiert. – James

Antwort

7

Für mich ist dieser Fehler auf, weil in meinem project.json geworfen wurde hatte ich richtig hinzugefügt:

"Microsoft.EntityFrameworkCore.SqlServer": "1.0.0-*", 

Kern zu verwenden, aber ich diese Zeile nicht entfernt hatte, die zwischen anderen Abhängigkeiten weiter unten meine Datei war :

"EntityFramework.MicrosoftSqlServer": "7.0.0-rc1-final", 

Sobald ich diese Zeile gelöscht habe, habe ich diesen Fehler überstanden.

+0

Danke @judgeja, du hast meinen Tag gerettet :) +1 für dich – Omar

+0

Warum passiert das? Weiß jemand was los ist? –

2

In meinem Fall Problem war das gleiche wie oben erwähnt - ich fand vergessen "EntityFramework.MicrosoftSqlServer" Abhängigkeit in verknüpften Projekt.

Um das Problem zu untersuchen, verwende ich project.lock.json meines Projekts. Es gab 2 Pakete mit System.Interactive.Async.dll - Ix-Async/1.2.5 und System.Interactive.Async/3.0.0.

Dann sind, welches Paket abhängig von Ix-Async (noch in project.lock.json surfen) und fanden, dass es EntityFramework.Core/7.0.0-RC1-final war. Da gab es keine weiteren Pakete, die auf EntityFramework.Core I hängt klar, dass ich

3

Für mich war es eine fehlerhafte Linie

EntityFramework.Core in einigen meiner eigenen Abhängigkeiten ( project.json einem meiner Projekt) haben

EntityFramework.InMemory

zusätzlich zu in project.json. Sobald ich gelöscht habe, begann es zu arbeiten

5

Ich benutze SQLite und Entity Framework Core. Ich war mit der folgenden Ausnahme konfrontiert.

Could not load file or assembly 'System.Interactive.Async, Version=3.0.3000.0, Culture=neutral, PublicKeyToken=94bc3704cddfc263' or one of its dependencies 

Ich habe alle notwendigen Pakete installiert, aber es hat nicht gelöst.

Es gibt ein Paket mit dem Namen System.Interactive.Async (Ix Async) die durch Nuget

installiert werden kann Dann wurde meine Laufzeitausnahme gelöst.

+0

Vielen Dank! –

-1

Für diejenigen, die neueren sein können, ist es vielleicht so einfach wie das Wiederherstellen der NuGet-Pakete auf Projektebene.

Klicken Sie in Ihrer Lösung mit der rechten Maustaste auf das Projekt, und klicken Sie auf die Option Restore Packages.

0

Ich bin nicht 100% sicher, aber ich denke, dass es ein Fehler sein kann, wo Sie Visual Studio neu starten müssen, nachdem Sie NuGet-Pakete wie System.Interactive.Async aktualisiert haben. Ich habe den gleichen Fehler gefunden und versucht, die Versionsumleitungen in App.config anzupassen. Ich konnte es nicht zur Arbeit bringen. Es gab mir den Fehler, die Baugruppe nicht laden zu können. Es gab mir den Fehler, selbst wenn ich die Version auf das herabsetzte, wonach sie gesucht und neu aufgebaut hatte. Ich habe Visual Studio neu gestartet und dann war alles in Ordnung. Das einzige, was mir einfällt, ist vielleicht, dass der Testläufer etwas in Erinnerung hatte. Ich bin mit Visual Studio 2017.

0

ich ein ähnliches Problem, und ich hatte Bindung Umleitung in app.config-Datei zu aktualisieren, um die entsprechende Version zu zeigen, wie unten dargestellt:

<dependentAssembly> 
    <assemblyIdentity name="System.Interactive.Async" publicKeyToken="94bc3704cddfc263" culture="neutral" /> 
    <bindingRedirect oldVersion="0.0.0.0-3.0.3000.0" newVersion="3.0.1000.0" /> 
</dependentAssembly> 

Blick auf die oldversion und newVersion im obigen Codebeispiel.