【问题标题】:A .NET exception (TypeLoadException) occured in the module模块中发生了 .NET 异常 (TypeLoadException)
【发布时间】:2011-06-28 15:16:48
【问题描述】:

我有一个 Visual Studio 项目,其中包含我在程序中使用的大量商业 DLL 文件。 到目前为止,我已经使用了许多这些 DLL 文件,没有任何问题。

昨天我不得不使用另一个 DLL 文件。我将 DLL 文件作为参考链接(像往常一样),我可以看到它已添加到项目中,因为代码完成工作并且我可以成功构建项目。

但是当我在目标 PC 上运行它时,我得到了一个 TypeLoadException。

A .NET exception (TypeLoadException) occured in the module

我试图捕获并打印异常中的确切信息,但我没有提供任何帮助。

以下是我收到的完整异常:

A .NET exception (TypeLoadException) occured in the module LightSwitch\nError message: Could not load type 'Backbone2.LightMode_Status_Ctr_1' from assembly 'Backbone2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null'.\nThrowing method: DiagModule.SetSwitch\n

(我无法执行任何调试并提供更多信息,因为我将项目构建为 dll,然后在目标 PC 上使用,实际上我可以在我的 PC 上运行该程序,因为它缺少所有必需的硬件)

【问题讨论】:

  • 您可以编辑您的问题并添加整个错误和异常信息吗?此外,您可以通过以下问题中的说明启用额外的程序集加载程序日志记录:stackoverflow.com/questions/255669/…

标签: c# exception dll


【解决方案1】:

检查 dll 是否是为与您的 PC 相同的架构构建的。我的意思是,如果您的电脑是 64 位的,请确保构建的 dll 对应于此,反之亦然

【讨论】:

  • 或者将主 .exe 文件标记为“x86”而不是“AnyCPU”。这几乎总能修复 DLL 架构不匹配的问题。
  • 这将导致BadImageException
  • 如果您的主文件是“x86”,并且您正在加载的所有 dll 都是“x86”或“任何 CPU”,则不会得到 BadImageException
【解决方案2】:

感谢所有回复,我设法找到了问题。 问题是该项目在不同文件夹中包含几个不同版本的库文件(dll)。在运行时(仍然不知道为什么)会选择一个 dll 文件,并且由于不同版本之间的文件不同,因此缺少一些方法。因此,将所有文件夹中的 DLL 文件更新为相同版本即可解决此问题。

【讨论】:

    【解决方案3】:

    检查 DLL 是否位于目标 PC 上的正确位置(或 GAC 中)。

    【讨论】:

    • 此时我已经检查了很多次参考/位置。
    【解决方案4】:

    启动 FusLogVw.exe -- 它是 .Net SDK 的一部分,可以从 VS 2010 命令提示符启动。配置日志记录以记录所有故障。重现问题,刷新 FusLogVw.exe 窗口中的视图。您应该能够找到与您的问题相对应的记录,它会准确地告诉您它在做什么,并且您应该能够弄清楚如何纠正问题。

    【讨论】:

    • 我已经编辑了我的帖子,这根本不可能,因为我构建了一个只能在目标 PC 上运行的 dll。
    • 能否将 FusLogVw.exe 复制到目标 PC 并从那里运行?
    • 在目标电脑上安装软件有很多限制。
    • 什么样的限制?如果可以复制Backbone2.dll,为什么不能再复制一个二进制文件?
    • 我需要安装Microsoft SDK,才能访问FusLogVm.exe,对吧? (msdn.microsoft.com/sv-se/windows/…)
    【解决方案5】:

    检查您是否引用了一个版本的 DLL,并且在运行时加载了另一个版本(来自 GAC)。

    【讨论】:

    • 我如何检查这个?我可以看到我正在使用的所有 DLL 文件(所有工作的和有问题的)都具有与运行时版本和版本相同的属性。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-12
    • 1970-01-01
    • 2016-08-25
    • 2021-04-04
    • 2021-09-12
    相关资源
    最近更新 更多