只有NUnit错误:无法加载文件或程序集'EntityFramework'

时间:2013-11-18 13:10:34

标签: entity-framework nunit assemblies

当我尝试运行特定测试时,我在NUnit中收到错误消息。错误如下所示:

ChatProj.Tests.MessageRepositoryTests.Logg_LoggWorking_AssertView:
System.IO.FileLoadException : Could not load file or assembly 'EntityFramework, Version=4.4.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)

Here is a picture

我已经查看了我的解决方案中的2个项目,并且我在两者中都重新使用了EF 6.0.0.0。 I've tried to look up the PublicKeyToken=b77a5c561934e089 and this is what I found in my solution.这有点奇怪,因为调试或构建webapp没有问题,其他单元测试在同一个项目中进行测试(相同的EF版本),而不是发现此错误(as you can see in the picture from before)

知道可能导致这个问题的原因是什么?

更新

我想我明白了。我正在使用nuget.org/packages/FakeDbSet,它使用如下命令:var mockItemList = new InMemoryDbSet {new Message {MessageID = 5000,Name =“Erland”,MessageString =“Foo Bar”,MessageDate = DateTime.Now}} ;这在某种程度上是伪造实体框架代码的旧方法。可以在这里看到:i.imgur.com/f6dnJbq.png

1 个答案:

答案 0 :(得分:1)

首先,确保EF DLL实际上被拉入测试应用程序的bin文件夹。如果是,并且DLL用于EF v6,您是否在app.config中看到测试项目的EF版本重定向?像这样的东西?

<configuration>
    <!-- Leave the rest of the configuration file alone and just add the runtime area as follows: -->
    <runtime>
        <assemblyBinding>
            <dependentAssembly>
                <assemblyIdentity name="EntityFramework" publicKeyToken="b77a5c561934e089" culture="neutral" />
                <bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" />
            </dependentAssembly>
        </assemblyBinding>
    </runtime>
</configuration>

如果没有,请尝试将其粘贴到app.config。

抱歉,如果没有更多信息,很难完全诊断。