我之前使用过NUnit,但暂时没用过,而且从未在这台机器上使用过。我在Program Files下解压缩了2.4.8版本,并且在尝试加载测试时我一直收到此错误。
无法加载文件或程序集'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”添加到我的PATH(并重新启动)。请注意,如果我将测试程序集复制到该文件夹中,那么
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不应该知道框架的位置(即,在同一个文件夹中)吗?
@Scott,我没有使用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
@devio,我尝试了同样结果的msi和zip。
答案 0 :(得分:12)
确保您添加了对nunit.framework的引用。如果有,则确保该引用的属性将copy local属性设置为true。
答案 1 :(得分:11)
我遇到了同样的问题,我使用NUnit-2.4.8-net-2.0.msi进行了安装。 扩展上面的“添加到gac”评论,这就是我所做的:
打开“visual sudio命令提示符(通常:确保gacutil在您的路径中)”和“cd”C:\ Program Files \ NUnit 2.4.8 \ bin“
从gac取消注册您的nunit条目。您可以通过查找gac中注册的nunit条目来执行此操作:
gacutil / l | find / i“nunit”> temp.bat&&记事本temp.bat
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
答案 2 :(得分:9)
如果使用NUnit-2.4.8-net-2.0.msi进行安装,则NUnit程序集将添加到GAC。
您也可以通过VS2005命令提示符中的runnig gacutil手动重新安装。
答案 3 :(得分:2)
请注意,当前的NUnit安装(2.5.10)不会在GAC上自动注册。如果你必须使用GAC,请通过gacutil / i注册,其中nunitframeworkpath通常是%Program Files%\ NUnit \ net-2.0 \ framework \ nunit-framework
答案 4 :(得分:1)
当我尝试将新的测试程序集添加到现有的NUnit测试项目时,我今天收到此错误消息。看来我的测试项目有多个路径引用相同的nunit.framework.dll程序集。
如果NUnit项目中有多个测试程序集,则可能需要验证测试项目中nunit.framework引用的Path属性。一旦我将它们匹配,错误消息便消失了。