30

我有一个编译良好的 C# .NET 类库MyClassLibrary。我正在尝试为它创建一个单元测试项目(使用 Visual Studio 单元测试框架和 Visual Studio 2010)。类库中确实有大类,但每当我针对最简单的类运行最简单的测试时,都会出现以下异常:

测试方法 MyClassLibraryTest.MyClassLibraryTests.MySimpleClassTest 抛出异常:System.TypeLoadException:无法从程序集“MyClassLibrary,Version=1.0.0.0,Culture=neutral,PublicKeyToken=null”加载类型“MyClassLibrary.MySimpleClass”。

我正在处理的所有项目都在同一个解决方案中,并且都是针对 .NET 4.0 编译的。所有这些都在 Windows 7 64 位机器上。

这是奇怪的部分:当我“运行”测试时,我得到了上述错误。但是当我“调试”测试时,它运行良好。为什么?

4

13 回答 13

39

我只是用头撞了一个小时。问题是我有一个名为 Something.exe 的命令行项目,它使用了一个名为 Something.dll 的类库项目。

于 2013-02-21T18:01:43.253 回答
29

也发生在我身上。就我而言,出现问题是因为测试项目和单元测试项目具有相同的名称。如果这也是您的情况,请重命名其中一个项目并重命名输出文件名以修复它。

于 2013-03-09T12:27:55.133 回答
11

MyClassLibrary 程序集在配置管理器中设置为 x86 模式。将此更改为 x64 修复了它。我真的希望 Visual Studio 能够检测到这一点并将其报告为一个不太模糊的错误。

于 2011-04-20T21:10:30.110 回答
4

也发生在我身上。它与 x64、Release 和 x86 模式的构建有关。就我而言,我删除了我的 bin 中的文件夹(参考程序集和单元测试中的 debug/release/x86)并重新运行我的单元测试。VS2010 有点报输出窗口的错误。这为我解决了它。

于 2011-10-11T06:36:54.873 回答
3

当我尝试添加具有相同主项目名称的测试项目时,它发生在我身上。

我的主要项目名称是:Calculator.OperationsManager 我的测试项目名称是:Calculator.OperationsManager

我已将测试项目名称更改为 Calculator.OperationsManager.Test,一切顺利。

于 2017-08-11T13:35:49.767 回答
2

今天经历了这个,虽然我会离开我的修复。

规格:VS 2013 / .Net 4.0

解决方案:进入菜单 > 测试 > 测试设置 > 默认处理器架构 > X64

在此处输入图像描述

于 2016-07-14T10:49:55.087 回答
1

这里有相同的消息,但我也无法调试测试。

就我而言,我正在测试的 DLL 已部署到 GAC(BizTalk 要求)。我已经创建了一个新类并正在对其进行测试,但是自从添加了被测类后,我就没有再次对 DLL 进行 GAC 处理。

于 2016-11-18T17:26:51.547 回答
1

万一这有助于其他人犯同样的错误(我意识到它并没有直接回答发布与调试的问题);我合并了一个遗留项目,其命名空间与现有项目冲突,因此将其重命名。尝试从该项目创建表单时出现此错误。

我检查了平台目标是否相同,并删除了 .\bin\ 目录以确保干净的重建,删除了对合并项目的引用并重新添加它,但仍然是同样的错误。

最终(!)我检查了项目属性中的程序集名称(右键单击项目,选择“属性”,选择“应用程序”选项卡)并将其更改为匹配默认命名空间,现在一切都很好。

于 2017-03-09T14:16:27.647 回答
1

我遇到了与 Trey 类似的问题,但我有 SharePoint 解决方案,而不是 BizTalk,它也使用 GAC 部署。GAC 有一个较旧的程序集。当我通过收回解决方案移除 GAC 组件时,测试通过了。

于 2018-08-23T08:40:31.063 回答
0

我在 VS 2013 中使用 NUnit 3 时遇到了这个错误。我通过在我的测试项目中删除包含未找到类型的程序集的程序集引用来解决它,然后重新添加引用。

于 2016-09-01T13:52:40.577 回答
0

以防万一有人需要:我在 Visual Studio 中创建了一个测试项目,并且想知道为什么即使 Visual Studio 反复要求我添加“System.Web”作为参考,为什么也找不到某些类。

我已经这样做了,并且错误不断发生。对我来说问题很简单(我知道之前应该检查过):我从创建 .NET Core 项目的模板创建了一个测试项目。将其更改为 .NET Framework 4.6.1 并添加“System.Web”作为参考后,一切正常。

于 2018-12-04T10:34:05.237 回答
0

遇到了同样的问题。以防万一它对任何人有帮助 - 我设法通过将 nuget 包 NUnit3TestAdapter 从版本 3.13.0 降级到 3.11.2 来使其工作。

您可以找到有关此的更多信息 - https://github.com/nunit/nunit-console/issues/424

于 2019-04-03T06:58:56.580 回答
0

这也发生在我身上。我在我的域项目上安装了一个 nuget 包,版本为 1.5,但我的单元测试项目中只有 1.1 版本。我通过更新单元测试项目上的版本以匹配域项目(正在测试的项目)上的版本解决了这个问题。

于 2020-02-19T22:02:17.740 回答