【问题标题】:How to diagnose "System.TypeLoadException" error如何诊断“System.TypeLoadException”错误
【发布时间】:2013-06-20 19:38:20
【问题描述】:

当我尝试在我的开发机器以外的机器上打开我的 Windows 窗体应用程序(我将其称为 MyApplication.exe)时,会弹出一个对话框窗口说:


MyApplication 已停止工作

Windows 可以在线检查问题的解决方案

  • 在线查看解决方案并关闭程序
  • 关闭程序

详情

问题签名:

  Problem Event Name:   CLR20r3
  Problem Signature 01: myapplication
  Problem Signature 02: 1.2.0.0
  Problem Signature 03: 51c34395
  Problem Signature 04: mscorlib
  Problem Signature 05: 4.0.0.0
  Problem Signature 06: 50484bd7
  Problem Signature 07: 1204
  Problem Signature 08: 89
  Problem Signature 09: System.TypeLoadException
  OS Version:   6.1.7600.2.0.0.256.48
  Locale ID:    1033
  Additional Information 1: 0a9e
  Additional Information 2: 0a9e372d3b4ad19135b953a78882e789
  Additional Information 3: 0a9e
  Additional Information 4: 0a9e372d3b4ad19135b953a78882e789

请务必注意,我使用 ILMerge 将 MyApplication.exe 和引用的 MyLibrary.dll 程序集合并为一个程序集(输出名称为 MyApplication.exe)。

另外,重要的是要注意,在我发布将extension method 添加到 MyApplication 项目的更新之前,测试机器能够毫无问题地运行 .exe。

也就是说,我给MyApplication添加了扩展方法,然后用ILMerge将.exe和.dll结合起来,测试机就会收到上述错误(有趣的是,我的开发机可以运行合并的.exe 没有问题)。

ILMerge 和扩展方法是否存在已知问题?这听起来很奇怪,但这是我的代码中唯一改变的地方。

由于我无法在我的开发机器上重现该问题,您对我如何解决测试机器上出现的System.TypeLoadException 错误有什么建议吗?

系统信息

  • 面向 .NET Framework 4.0(我所有的测试机器都安装了这个)
  • ILMerge 版本 2.12.803
  • 开发机器:Windows 2008 Server R2; Visual Studio 2010 专业版
  • 客户端计算机:XP、Win7 和 Win8(都出现错误)

【问题讨论】:

标签: winforms .net-4.0 ilmerge


【解决方案1】:

如果您在构建机器上安装了 .net 4.5,如果您不小心,它会崩溃。

基本上微软改变了 1 个属性的位置(从 System.Core 到 mscorlib)。

his post 中的 Matt Wrock 解释了如何使用 ILMerge 解决此问题。虽然这是针对 Beta 版的,但它应该适用于该版本。

【讨论】:

  • 我遇到了同样的问题。我添加了 1 个扩展方法,并在安装了 4.5 的机器上构建了目标 4.0。即使不使用 IL 合并,也会出现相同类型的加载异常。删除扩展方法解决了这个问题。
【解决方案2】:

Matt Wrocks 的帖子(感谢@Daniel White)提供了我正在寻找的信息。但是,他指定的 /targetplatform 路径对我不起作用。

而不是Wrocks路径

/targetplatform:"v4,C:\Program Files\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0"

我不得不使用

/targetplatform:"v4,C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-10-16
    • 1970-01-01
    • 2011-06-08
    • 1970-01-01
    • 1970-01-01
    • 2023-04-10
    • 2014-08-27
    • 2015-08-05
    相关资源
    最近更新 更多