NUnit程序集未找到。

20

我以前使用过NUnit,但已经有一段时间了,并且从未在这台电脑上使用过。我将2.4.8版本解压到了Program Files文件夹下,但当我尝试加载我的测试时,不断出现以下错误:

无法加载文件或程序集“nunit.framework,Version=2.4.8.0, Culture=neutral, PublicKeyToken=96d09a1eb7f44a77”或其某个依赖项。系统找不到指定的文件**

为了简化问题,我编译了最基本的测试文件。

using NUnit.Framework;

namespace test
{
    [TestFixture]
    public class Tester
    {
        [Test]
        public void ATest()
        {
            Assert.IsTrue(false, "At least the test ran!");
        }
    }
}

我已将 "C:\Program Files\NUnit-2.4.8-net-2.0\bin" 添加到我的路径中(并重新启动)。请注意,如果我将测试程序集复制到该文件夹中,则以下命令可以正常工作:
C:\Program Files\NUnit-2.4.8-net-2.0\bin>nunit-console test.dll
但是以下命令却失败了:
C:\Program Files\NUnit-2.4.8-net-2.0\bin>nunit-console c:\dev\nunit_test\test.dll
以及
C:\dev\nunit_test>nunit_console test.dll
假设我将 NUnit.Framework DLL 文件复制到我的项目的 bin 文件夹中,那么这个问题就会解决。但是,我记得过去不需要这样做。而且,在 GUI 中我也遇到了相同的错误。GUI 不应该知道框架在哪里吗(也就是说,在同一个文件夹中)?
我没有使用 Visual Studio。我使用以下命令来编译测试项目:
%windir%\Microsoft.NET\Framework\v2.0.50727\csc.exe /r:"C:\Program Files\NUnit-2.4.8-net-2.0\bin\nunit.framework.dll" /t:library /out:test.dll test.cs
我尝试了 .msi 和 .zip 文件,但结果相同。

1
这是个蠢问题,但是你在测试项目中加入了 NUnit 的引用吗? - JamesSugrue
5个回答

12

请确保您已添加对nunit.framework的引用。如果您已经添加了引用,请确保该引用的属性设置为复制本地属性设置为true。


11

我也遇到了同样的问题,我是使用NUnit-2.4.8-net-2.0.msi安装的。在"添加到GAC"的评论上进行补充,这是我所做的:

  • 打开你的“Visual Studio命令提示符”(通常是:确保gacutil在你的路径中)并输入:cd "C:\Program Files\NUnit 2.4.8\bin"

  • 从GAC中注销你的NUnit条目。你可以通过查找GAC中注册的NUnit条目来实现此目的:

    gacutil /l | find /i "nunit" > temp.bat && notepad temp.bat
    
  • 在 "gacutil /uf" 前加上 nunit.core 和 nunit.framework 的行,如下:

  • gacutil /uf nunit.core,Version=2.4.2.0,Culture=neutral,PublicKeyToken=96d09a1eb7f44a77
    
    gacutil /uf  nunit.framework,Version=2.4.2.0,Culture=neutral,PublicKeyToken=96d09a1eb7f44a77
    
  • 运行您的.bat文件以删除它们: temp.bat

  • 注册您需要的NUnit DLL文件:

  • gacutil /i nunit.core.dll
    
    gacutil /i nunit.framework.dll
    

我曾经遇到过同样的问题,检查了全局程序集缓存(GAC)后发现它丢失了。添加后问题解决了。 - neleus

10
如果您使用"NUnit-2.4.8-net-2.0.msi"进行安装,那么NUnit程序集将会被添加到GAC中。
您也可以通过在Visual Studio 2005命令提示符中运行"gacutil"来手动重新安装。

由于某种原因,即使安装后我仍然遇到了这个问题,但我自己将程序集添加到了全局程序集缓存中,这解决了问题。 - harpo
1
只是更新一下,对于 Windows 7 上的 NUnit 2.5.7 仍然适用。我可以通过将 nunit.framework 放入 \windows\assembly 中来构建测试。 - harpo
@harpo,我需要这样做才能让我的NAnt+NUnit构建工作。谢谢! - Frank Shearar

2
请注意,当前的NUnit安装(2.5.10)不会自动在GAC中注册。
如果您必须使用GAC,请通过gacutil /i <nunitframeworkpath>进行注册,其中nunitframeworkpath通常为%Program Files%\NUnit\net-2.0\framework\nunit-framework

1
今天我尝试将一个新的测试程序集添加到现有的 NUnit 测试项目中时,遇到了这个错误消息。看起来我的测试项目对相同的 nunit.framework.dll 程序集有多个路径引用。
如果您在 NUnit 项目中有多个测试程序集,您可能需要验证测试项目中 nunit.framework 引用的 Path 属性。一旦我使它们匹配,错误消息就消失了。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接