30

我正在设置一个新的 64 位机器作为构建服务器运行。当我尝试将我的 NUnit 测试程序集加载到 NUnit GUI 中时,出现以下错误。

没有什么明显的缺失,所有的依赖似乎都存在。所有的 DLL 都是为 x86 平台编译的。

使用 NUnit 2.4.7。我尝试升级到 2.4.8,但出现同样的错误。

System.IO.FileNotFoundException:无法加载文件或程序集“MyTestProject”或其依赖项之一。该系统找不到指定的文件。

System.IO.FileNotFoundException...

Server stack trace: 
   at System.Reflection.Assembly.nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, Assembly locationHint, StackCrawlMark& stackMark, Boolean throwOnFileNotFound, Boolean forIntrospection)
   at System.Reflection.Assembly.InternalLoad(AssemblyName assemblyRef, Evidence assemblySecurity, StackCrawlMark& stackMark, Boolean forIntrospection)
   at System.Reflection.Assembly.InternalLoad(String assemblyString, Evidence assemblySecurity, StackCrawlMark& stackMark, Boolean forIntrospection)
   at System.Reflection.Assembly.Load(String assemblyString)
   at NUnit.Core.Builders.TestAssemblyBuilder.Load(String path)
   at NUnit.Core.Builders.TestAssemblyBuilder.Build(String assemblyName, Boolean autoSuites)
   at NUnit.Core.Builders.TestAssemblyBuilder.Build(String assemblyName, String testName, Boolean autoSuites)
   at NUnit.Core.TestSuiteBuilder.BuildSingleAssembly(TestPackage package)
   at NUnit.Core.TestSuiteBuilder.Build(TestPackage package)
   at NUnit.Core.SimpleTestRunner.Load(TestPackage package)
   at NUnit.Core.ProxyTestRunner.Load(TestPackage package)
   at NUnit.Core.ProxyTestRunner.Load(TestPackage package)
   at NUnit.Core.RemoteTestRunner.Load(TestPackage package)
   at System.Runtime.Remoting.Messaging.StackBuilderSink._PrivateProcessMessage(IntPtr md, Object[] args, Object server, Int32 methodPtr, Boolean fExecuteInContext, Object[]& outArgs)
   at System.Runtime.Remoting.Messaging.StackBuilderSink.SyncProcessMessage(IMessage msg, Int32 methodPtr, Boolean fExecuteInContext)

Exception rethrown at [0]: 
   at System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg)
   at System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type)
   at NUnit.Core.TestRunner.Load(TestPackage package)
   at NUnit.Util.TestDomain.Load(TestPackage package)
   at NUnit.Util.TestLoader.LoadTest(String testName)
4

4 回答 4

30

解决方案是为“AnyCPU”而不是 32 位构建测试项目。我可以解决使我们使用 32 位的限制。

感谢 David 和 Joe90 的建议。我当然学到了一些新东西。fuslogvw.exe 很棒,我以前不知道它存在。

于 2008-12-30T13:19:08.000 回答
11

如果确实需要为 x86 构建测试项目,可以使用 nunit-x86。

请参阅http://www.nunit.org/index.php?p=nunit-gui&r=2.4.2上的“64 位平台上的 NUnit” 。

于 2009-07-05T19:37:24.540 回答
4

使用(从 Visual Studio 命令提示符以管理员身份运行)激活 Fusion 日志,fuslogvw.exe以查看程序集加载器尝试加载的内容以及所有发生的错误。

于 2008-12-30T10:49:28.193 回答
0

在这篇文章之后找到了解决方案:“无法加载文件或程序集'X.dll'或其依赖项之一。找不到指定的模块。” - 在主机服务器上,更具体地说,使用http://dependencywalker.com/

于 2014-05-08T15:03:44.480 回答