2016-07-05 61 views
6

Sto cercando di far funzionare i test dell'unità nella mia soluzione .NET Core 1.0. Quando eseguo un test vuoto funziona perfettamente. Tuttavia, non appena cerco di creare nuova istanza ApplicationDbContext il test fallisce con la seguente eccezione:xunit e 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) 

Non certo perché la System.Interactive.Async è necessaria a tutti, ma ho aggiunto come la dipendenza alla mia Progetto di test Tuttavia, la DLL non sembra essere copiata nella cartella bin \ Debug \ netcoreapp1.0 su build. Se lo copio lì manualmente l'effetto è esattamente lo stesso. Qualche idea, cos'altro posso fare per farlo funzionare?

+0

hai aggiunto questo al file json di prova "portable-net45 + win8"? –

+2

Si prega di inviare un po 'di codice. –

+0

Avendo lo stesso problema, ma dalla mia classe logica aziendale. Ho portable-net45 + win8 nel mio project.json frameworks imports. – James

risposta

7

per me era stato gettato questo errore perché nella mia project.json avevo aggiunto correttamente:

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

da usare nucleo, ma non avevo rimosso questa linea che era più in basso il mio file tra le altre dipendenze :

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

Una volta eliminata la riga, ho superato questo errore.

+0

Grazie @judgeja, hai salvato la mia giornata :) +1 per te – Omar

+0

Perché succede? Qualcuno sa cosa sta succedendo? –

2

Nel mio caso il problema era lo stesso di cui sopra - ho trovato dimenticato "EntityFramework.MicrosoftSqlServer" dipendenza nel progetto collegato.

Per indagare sui problemi, utilizzo il mio progetto project.lock.json. C'erano 2 pacchetti con System.Interactive.Async.dll - Ix-Async/1.2.5 e System.Interactive.Async/3.0.0.

cercate quindi quale pacchetto dipendente da Ix-Async (ancora surf project.lock.json) e trovarono che era EntityFramework.Core/7.0.0-rc1-finale. Come non c'era più pacchetti che dipende EntityFramework.Core mi sono reso conto che ho EntityFramework.Core in alcune delle mie dipendenze (uno dei miei progetti project.json)

3

Per me è stata una linea errante

EntityFramework.InMemory

oltre a Microsoft.EntityFrameworkCore.InMemory in project.json. Una volta eliminato, ha iniziato a funzionare

5

Sto usando SQLite e Entity Framework Core. Stavo affrontando l'eccezione qui sotto.

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

Ho installato tutti i pacchetti necessari ma non è stato risolto.

C'è un pacchetto denominato System.Interactive.Async (Ix Async) che può essere installato tramite Nuget

Quindi la mia eccezione di runtime è stata risolta.

+0

Grazie mille! –

-1

Per coloro che potrebbero essere più recenti, potrebbe essere semplice come ripristinare i pacchetti NuGet a livello di progetto.

Nella soluzione, fare clic con il pulsante destro del mouse sul progetto e selezionare l'opzione Ripristina pacchetti.

0

Non sono sicuro al 100%, ma, penso che potrebbe essere un bug in cui è necessario riavviare Visual Studio dopo aver aggiornato i pacchetti NuGet come System.Interactive.Async. Stavo correndo lo stesso errore e ho provato a regolare i reindirizzamenti della versione in App.config. Non riuscivo a farlo funzionare. Continuava a darmi l'errore di non essere in grado di caricare il gruppo. Mi ha dato l'errore anche durante il downgrade della versione a ciò che cercava e ricostruzione. Ho riavviato Visual Studio e poi è andato tutto bene. L'unica cosa che riesco a pensare è che forse il corridore del test avesse qualcosa in memoria. Sto usando Visual Studio 2017.

0

ho avuto un problema simile e ho dovuto aggiornare reindirizzamento obbligatorio in tutti i file di app.config per puntare alla versione appropriata come illustrato di seguito:

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

sguardo al oldVersion e nuovaVersione nell'esempio di codice precedente.