NUnit"无法加载文件或组装'MyTestProject'

Nee*_*ack 30 .net 64-bit continuous-integration nunit

我正在设置一台新的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)
Run Code Online (Sandbox Code Playgroud)

Nee*_*ack 29

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

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

  • 是的,但如果您需要将项目编译为x86,最好使用nunit-x86. (4认同)

Red*_*ode 11

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

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


Dav*_*itt 5

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