NUnit 2.5.8需要运行NUnit.Framework 2.5.5。怎么会这样?!那是为了什么?

时间:2011-01-23 19:21:14

标签: .net exception-handling nunit nunit-2.5 nunit-2.5.9

我在nunit.exe发起尝试时遇到了一个愚蠢的例外:

  

System.IO.FileNotFoundException:无法加载文件或程序集'nunit.framework,Version = 2.5.5.10112,Culture = neutral,PublicKeyToken = 96d09a1eb7f44a77'或其依赖项之一。系统找不到指定的文件。

i.imgur.com/jSm73.png

NUnit的版本是2.5.9,是从MSI包安装的,即不同的版本!将库放入可执行文件的根目录没有帮助。 (2.5.5)的错误相同。

怎么可能?

3 个答案:

答案 0 :(得分:3)

NUnit应用程序动态加载NUnit框架,因此查看静态引用的程序集没有多大帮助。

使用the Assembly Binding Log Viewer可以提供有关哪些程序集请求2.5.5程序集的更详细信息。

更新:使用日志查看器跟踪NUnit 2.5.9完成的所有程序集绑定。如果没有立即加载测试程序集,则永远不会加载nunit.framework程序集。 Nunit核心组件是加载的,但只有2.5.9版本。

答案 1 :(得分:1)

它是否正在尝试自动加载使用NUnit 2.5.5编译的测试程序集?

在这种情况下,我宁愿把缺少的NUnit dll放在测试程序集中,而不是NUnit runner。 (通过将其作为构建过程的一部分。在VisualStudio中,如果使用VS,则将CopyLocal属性设置为为NUnit.Framework程序集引用为true。)

答案 2 :(得分:1)

当我将“Copy Local”设置为true并且nunit引用静态路径时,我遇到了这个问题。当我更新nunit时,我更新了路径中的dll,但是在实际的项目文件(csproj)中,它仍然有引用包括Version作为旧版本。手动删除它然后重新添加它,修复它。