Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何研究拒绝在NUnit中加载测试程序集的过程?

如何研究拒绝在NUnit中加载测试程序集的过程?
EN

Stack Overflow用户
提问于 2010-11-05 03:20:54
回答 1查看 3.9K关注 0票数 5

(这适用于我团队中的其他人,因此很可能与我的机器的安装有关。)

我正在使用NUnit GUI测试运行程序。当我使用File/Open加载测试的程序集时,我会得到一个错误。

该项目是用Visual 2005构建的,Visual的“关于”框给出了.NET框架版本为2.0.50727 SP2。

这是我得到的错误:

程序集未加载

System.BadImageFormatException :无法加载文件或程序集“测试、Version=0.0.0.0、Culture=neutral、PublicKeyToken=null”或其依赖项之一。试图加载格式不正确的程序。您可能试图加载使用CLR版本构建的程序集,而不是当前运行NUnit的版本(2.0.50727),或者试图将64位程序集加载到32位进程中。

我刚刚使用程序集绑定日志查看器 (Fuslogvw.exe)查看了融合日志,这就是我所看到的,它没有任何意义,正如我告诉它看所有绑定。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
*** Assembly Binder Log Entry  (05/11/2010 @ 11:55:26) ***

The operation was successful.
Bind result: hr = 0x0. The operation completed successfully.

Assembly manager loaded from:  C:\Windows\Microsoft.NET\Framework64\v2.0.50727\mscorwks.dll
Running under executable  C:\Program Files (x86)\NUnit 2.5.7\bin\net-2.0\nunit.exe
--- A detailed error log follows. 

=== Pre-bind state information ===
LOG: User = KSSRETAIL\ian.ringrose
LOG: DisplayName = System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
 (Fully-specified)
LOG: Appbase = file:///C:/Program Files (x86)/NUnit 2.5.7/bin/net-2.0/
LOG: Initial PrivatePath = NULL
LOG: Dynamic Base = NULL
LOG: Cache Base = NULL
LOG: AppName = nunit.exe
Calling assembly : nunit-gui-runner, Version=2.5.7.10213, Culture=neutral, PublicKeyToken=96d09a1eb7f44a77.
===
LOG: This bind starts in default load context.
LOG: Using application configuration file: C:\Program Files (x86)\NUnit 2.5.7\bin\net-2.0\nunit.exe.config
LOG: Using machine configuration file from C:\Windows\Microsoft.NET\Framework64\v2.0.50727\config\machine.config.
LOG: Post-policy reference: System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
LOG: Reusing an assembly instance that was previously loaded (C:\Windows\assembly\GAC_MSIL\System.Windows.Forms\2.0.0.0__b77a5c561934e089\System.Windows.Forms.dll).

多亏了Lasse给我指明了正确的方向。当我运行nunit-x86.exe时,我可以加载测试DLL。因此,系统中必须有一个32位的DLL .然而,仍然不知道如何获得一组有用的日志,以便以逻辑的方式跟踪这类问题。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-11-05 03:29:32

这有几个原因:

1) .NET框架的版本。确保加载了正确的版本,或者在配置(app.config)中定义它

2)版本地狱:一些程序集使用与其他程序集不匹配的版本,而您可以在本地文件夹中使用一个版本。这通常是最有可能的原因。

3)您没有对程序集的引用,但这是您的系统所需要的,并且可能是动态加载的(nhibernate有一些这样的dll),并且它们不会自动复制到本地的test bin文件夹中。在本地文件夹中添加对那些DLL的引用。

4)位32位/ 64位,如果在任何点都没有加载托管代码

要找出答案,请检查以上所有内容。我还建议您通过sysinternals运行进程监视器。在文件加载事件上,您将看到一个未找到的文件事件。这需要一段时间来适应,但它是一个非常好的工具。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4105398

复制
相关文章

相似问题

NUnit无法加载程序集

11

NUnit:未能加载程序集nunit.framework

13

无法在NUnit中加载程序集

12

NUnit错误:不是测试程序集

22

NUnit测试错误‘无法加载文件或程序集..’

20
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文