什么可能导致Visual Studio单元测试中的System.TypeLoadException?

问题描述 投票:26回答:12

我有一个编译好的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位计算机上。

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

c# visual-studio-2010 vs-unit-testing-framework
12个回答
33
投票

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


0
投票

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

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

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


0
投票

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

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


0
投票

遇到同样的问题。如果它可以帮助任何人 - 我设法通过将nuget包NUnit3TestAdapter从版本3.13.0降级到3.11.2来实现它。

你可以找到更多相关信息 - https://github.com/nunit/nunit-console/issues/424


25
投票

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


10
投票

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


4
投票

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


2
投票

今天通过这个,虽然我会离开我的修复。

规格:VS 2013 / .Net 4.0

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

enter image description here


1
投票

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

在我的例子中,我测试的DLL被部署到GAC(BizTalk要求)。我创建了一个新类并且正在对它进行测试,但是因为添加了被测试的类而没有再次对GAC进行测试。


1
投票

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

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

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


1
投票

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


0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.