什么样的问题会导致TypeLoadException?

时间:2010-06-22 15:22:33

标签: c# exception clr

我有一个庞大而臃肿的软件,我想为它添加一个新的GUI元素。 GUI元素是使用XAML和WPF编写的。我在一个单独的程序集中创建了UI元素,并在大软件中引用它。这两个项目在VS2010下顺利编译,但是当我运行我的应用程序时,我得到一个TypeLoadException

使用调试器查看异常,我收到以下消息:Could not load type GUI.Dashboard from assembly GUI, blah, blah。没有InnerException也没有任何进一步的细节。

.GNU文档说,当没有消息传递给异常的构造函数时,会出现此消息。我假设异常的生产者本身不知道它是如何发生的。

我尝试使用工具Fuslogvw.exe,它有效地向我展示了一些不相关的遗漏依赖项。但是,它无法找到有关此异常的任何信息。

什么样的问题可能会引发像这样的不精确的异常?有没有办法让Fuslogvw.exe知道它以获取一些细节?

提前谢谢你,

编辑: 我用调试符号有效地编译了我的应用程序当我尝试实例化包含对有问题符号的引用的类时,会发生异常。即:

class SomeClass
{
    GUI.Dashboard dashboard;
}

呼叫追踪看起来很喜欢这个:

at SomeClass..ctor()
at MainClass.Main() din MainClass.cs:line 42

4 个答案:

答案 0 :(得分:0)

可能的问题包括:

  1. 您引用的程序集仅为x64,而您的使用者是32位CLR上的x86或AnyCPU
  2. 您的使用者程序集是根据引用程序集的不同版本编译的
  3. 您可以尝试use FusLogVW打开程序集绑定日志记录,并检查日志文件以获取有关失败的更多信息。

答案 1 :(得分:0)

当公共语言运行库找不到程序集,程序集中的类型或无法加载类型时,抛出TypeLoadException。

TypeLoadException使用HRESULT COR_E_TYPELOAD,其值为0x80131522。

有关TypeLoadException实例的初始属性值列表,请参阅TypeLoadException构造函数。

来源:MSDN

答案 2 :(得分:0)

只是为此添加另一个答案:

我们有一个C ++客户端调用.NET COM dll。

.NET dll的开发人员重命名了包含C#类的命名空间,虽然progid在class属性和C ++调用代码中保持相同,但运行时无法加载对象导致此错误。< / p>

答案 3 :(得分:-2)

我终于找到了这个错误的原因:显然,在某些情况下,引用.exe文件无法正常工作。一些方法和类加载正常,但有些失败。在另一个项目中,引用此.exe文件没有问题。

切换到.dll格式解决了所有链接问题。我认为这是CLR中的一个错误。