xunit和System.Interactive.Async

问题描述 投票:6回答:7

我试图在我的.NET Core 1.0解决方案中运行单元测试。当我运行一个空的测试它工作正常。但是,只要我尝试创建ApplicationDbContext的新实例,测试就会失败并出现以下异常:

  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)

不知道为什么需要System.Interactive.Async,但我将它作为依赖项添加到我的Tests项目中。但是,在构建时,dll似乎不会复制到bin \ Debug \ netcoreapp1.0文件夹中。如果我手动复制它的效果完全相同。任何想法我还能做些什么才能让它发挥作用?

.net entity-framework .net-core xunit.net
7个回答
7
投票

对我来说这个错误被抛出,因为在我的project.json中我正确地添加了:

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

使用核心,但我没有删除这行,这是我的文件在其他依赖项之间的进一步:

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

删除该行后,我就遇到了这个错误。


5
投票

我正在使用SQLite和Entity Framework Core。我正面临着以下异常。

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

我已经安装了所有必需的软件包,但它没有解决。

有一个名为System.Interactive.Async(Ix Async)的包可以通过Nuget安装

然后我的运行时异常就解决了。


3
投票

对我来说,这是一个错误的路线

实体框架。在内存中

除了在Microsoft.EntityFrameworkCore.InMemoryproject.json。删除后,它就开始工作了


2
投票

在我的情况下问题与上面提到的相同 - 我发现在链接的项目中忘记了“EntityFramework.MicrosoftSqlServer”依赖。

为了调查问题,我使用我的项目的project.lock.json。有2个数据包与System.Interactive.Async.dll - Ix-Async / 1.2.5和System.Interactive.Async/3.0.0

然后看看哪个数据包依赖于Ix-Async(仍然在project.lock.json冲浪)并发现它是EntityFramework.Core / 7.0.0-rc1-final。因为没有更多的数据包依赖于EntityFramework.Core我意识到我在我自己的一些依赖项中有EntityFramework.Core(我的项目之一project.json


1
投票

我遇到了类似的问题,我不得不更新app.config文件中的绑定重定向,指向相应的版本,如下所示:

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

查看上面代码示例中的oldVersion和newVersion。


0
投票

我不是百分百肯定,但是,我认为在更新NuGet包(如System.Interactive.Async)之后需要重新启动Visual Studio可能是一个错误。我遇到了同样的错误,并尝试调整App.config中的版本重定向。我无法让它发挥作用。它一直给我一个关于无法加载程序集的错误。即使将版本降级到它正在寻找和重建的版本,它也给了我错误。我重新启动了Visual Studio,然后就没事了。我唯一能想到的可能是测试运行器在内存中缓存了一些东西。我正在使用Visual Studio 2017。


-1
投票

对于那些可能更新的人来说,它可能就像在项目级别恢复NuGet包一样简单。

在解决方案中,右键单击该项目,然后单击“还原包”选项。

© www.soinside.com 2019 - 2024. All rights reserved.