我在Vista 64位上,我有一个使用x86配置构建的项目.一切正常.现在,我们正在创建测试.我们有NUnit 2.4.8,但是我们遇到了很多问题.
当我们直接选择.dll时,测试正在通过Nunit.exe(gui)加载,但在执行时我们有一个system.badimageformatexception.
我在谷歌搜索关于nunit.exe.config的一些技巧,但没有工作.(更改为UTF8 ...取消注释启动的.net版本).
任何的想法?
更新
我已经清理了解决方案并清除了所有BIN文件夹.现在,当我编译时,我清楚地看到我在bin目录中只有/ x86 /而不是x64中的旧/ debug /.
当我使用Nunit时,我有一个异常(在加载中):System.IO.FileNotFoundException ...
服务器堆栈跟踪:System.Reflection.Assembly._nLoad(AssemblyName fileName,String codeBase,Evidence assemblySecurity,Assembly locationHint,StackCrawlMark&stackMark,Boolean throwOnFileNotFound,Boolean forIntrospection)在System.Reflection.Assembly.InternalLoad(AssemblyName assemblyRef,Evidence assemblySecurity,StackCrawlMark& stackMark,布尔forIntrospection)在System.Reflection.Assembly.InternalLoad(字符串assemblyString,在System.Reflection.Assembly.Load(字符串assemblyString)在NUnit.Core.Builders.TestAssemblyBuilder.Load证据assemblySecurity,StackCrawlMark&stackMark,布尔forIntrospection)(字符串在NUnit.Core.Builders.TestAssemblyBuilder.Builders.TestAssemblyBuilder.Build(String assemblyName,String testName,Nnoit.Core.Builders.TestAssemblyBuilder.Build(String assemblyName,Boolean autoSuites)上的路径)布尔autoSuites)在NUnit.Core.TestSuiteBuilder.BuildSingleAssembly(TestPackage封装)在NUnit.Core.TestSuiteBuilder.Build(TestPackage封装)在NUnit.Core.SimpleTestRunner.Load(TestPackage封装)在NUnit.Core.ProxyTestRunner.Load(TestPackage包)在NUnit.Core.ProxyTestRunner.Load(TestPackage包)的NUnit.Core.RemoteTestRunner.Load(TestPackage包)处于System.Runtime.Remoting.Messaging.StackBuilderSink._PrivateProcessMessage(IntPtr md,Object [] args,Object server,Int32 System.Runtime.Remoting.Messaging.StackBuilderSink.SyncProcessMessage上的methodPtr,Boolean fExecuteInContext,Object []和outArgs)(IMessage msg,Int32 methodPtr,Boolean fExecuteInContext)建立(TestPackage封装)在NUnit.Core.SimpleTestRunner.Load(TestPackage封装)在NUnit.Core.ProxyTestRunner.Load(TestPackage封装)在NUnit.Core.ProxyTestRunner.Load(TestPackage封装)在NUnit.Core.RemoteTestRunner.Load( System.Runtime.Remoting.Messaging.StackBuilderSink上的System.Runtime.Remoting.Messaging.StackBuilderSink._PrivateProcessMessage(IntPtr md,Object [] args,Object server,Int32 methodPtr,Boolean fExecuteInContext,Object []&outArgs)中的TestPackage包. SyncProcessMessage(IMessage msg,Int32 methodPtr,Boolean fExecuteInContext)建立(TestPackage封装)在NUnit.Core.SimpleTestRunner.Load(TestPackage封装)在NUnit.Core.ProxyTestRunner.Load(TestPackage封装)在NUnit.Core.ProxyTestRunner.Load(TestPackage封装)在NUnit.Core.RemoteTestRunner.Load( System.Runtime.Remoting.Messaging.StackBuilderSink上的System.Runtime.Remoting.Messaging.StackBuilderSink._PrivateProcessMessage(IntPtr md,Object [] args,Object server,Int32 methodPtr,Boolean fExecuteInContext,Object []&outArgs)中的TestPackage包. SyncProcessMessage(IMessage msg,Int32 methodPtr,Boolean fExecuteInContext)Messaging.StackBuilderSink._PrivateProcessMessage(IntPtr的MD,对象[]指定参数时,对象服务器,的Int32 methodPtr,布尔fExecuteInContext,对象[]&outArgs)在System.Runtime.Remoting.Messaging.StackBuilderSink.SyncProcessMessage(即时聊天味精,的Int32 methodPtr,布尔fExecuteInContext )Messaging.StackBuilderSink._PrivateProcessMessage(IntPtr的MD,对象[]指定参数时,对象服务器,的Int32 methodPtr,布尔fExecuteInContext,对象[]&outArgs)在System.Runtime.Remoting.Messaging.StackBuilderSink.SyncProcessMessage(即时聊天味精,的Int32 methodPtr,布尔fExecuteInContext )
在[0]处重新抛出异常:位于NUnit.Core的System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData&msgData,Int32类型)的System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg,IMessage retMsg). NUnit.Util.TestDomain.Load(TestPackage包)中的TestRunner.Load(TestPackage包),位于NUnit.Util.TestLoader.LoadTest(String testName)
更新2
我正在使用任何已修改为x86而不是x64的CPU进行编译.原因是调试.这已在前一个链接中讨论过.我必须确认NUnit是在64位mod和Corflags.exe中运行的
好的,我在这个网站上找到了解决方案.你必须使用\ NUnit-2.4.8\bin \nunit-x86.exe而不是\ NUnit-2.4.8\bin \nunit.exe ...不知道\ bin \有2个nunit !! !
大家好
NUnit主机可能以64位进程运行(您可以通过查看任务管理器来确认).如果程序集仅为x86,那么它将无法在该进程中运行.
您可以尝试在NUnit可执行文件上运行corflags以强制它使用/ 32bit +标志运行x86