当我尝试在MyApplication.exe
我的开发机器以外的机器上打开我的 Windows 窗体应用程序(我将调用它)时,会弹出一个对话框窗口说:
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 。
也就是说,我在.exe和.dll中添加扩展方法后MyApplication
,ILMerge
将.exe和.dll结合起来,测试机会收到上述错误(有趣的是,我的开发机可以运行合并的.exe没有问题)。
ILMerge 和扩展方法是否存在已知问题?这听起来很奇怪,但这是我的代码中唯一改变的地方。
由于我无法在我的开发机器上重现该问题,您对如何解决System.TypeLoadException
测试机器上发生的错误有什么建议吗?
系统信息
- 以 .NET Framework 4.0 为目标(我所有的测试机器都安装了这个)
- ILMerge 版本 2.12.803
- 开发机器:Windows 2008 Server R2;视觉工作室 2010 专业版
- 客户端机器:XP、Win7 和 Win8(都出现错误)