【问题标题】:xunit and System.Interactive.Asyncxunit 和 System.Interactive.Async
【发布时间】:2016-07-05 14:37:23
【问题描述】:

我正在尝试在我的 .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,但我将它作为依赖项添加到了我的测试项目中。但是,该 dll 似乎没有在构建时复制到 bin\Debug\netcoreapp1.0 文件夹。如果我手动复制它,效果完全一样。任何想法我还能做些什么来让它工作?

【问题讨论】:

  • 您是否已将此添加到您的测试 json 文件“portable-net45+win8”中?
  • 请贴一些代码。
  • 有同样的问题,但来自我的业务逻辑课。我的 project.json 框架导入中有portable-net45+win8。

标签: .net entity-framework .net-core xunit.net


【解决方案1】:

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

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

使用核心,但我没有删除在其他依赖项之间位于我的文件下方的这一行:

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

一旦我删除了那行,我就克服了这个错误。

【讨论】:

  • 谢谢@judgeja,你拯救了我的一天:) +1 为你
  • 为什么会这样?有人知道发生了什么吗?
【解决方案2】:

我正在使用 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】:

对我来说这是一条错误的线

EntityFramework.InMemory

除了Microsoft.EntityFrameworkCore.InMemory 中的project.json。一旦我删除,它就开始工作了

【讨论】:

    【解决方案4】:

    在我的情况下,问题与上述相同 - 我发现链接项目中忘记了 "EntityFramework.MicrosoftSqlServer" 依赖项。

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

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

    【讨论】:

      【解决方案5】:

      我遇到了类似的问题,我必须更新 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。

      【讨论】:

        【解决方案6】:

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

        【讨论】:

          【解决方案7】:

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

          在您的解决方案中,右键单击项目并单击“恢复包”选项。

          【讨论】:

            猜你喜欢
            • 2018-09-29
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2023-03-26
            • 2012-06-13
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多