2013-06-20 87 views
0

我的Windows窗体应用程序(我称之为MyApplication.exe)比我的dev的机器之外的机器上,一个对话框弹出说:如何当我尝试打开诊断“System.TypeLoadException”错误


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)。

此外,重要的是要注意,测试机器能够在没有问题的情况下运行.exe,直到我发布了一个向MyApplication项目添加extension method的更新。

换句话说,之后我加入了扩展方法MyApplication,然后用ILMerge的.exe文件合并和.dll,测试机将收到上面的错误(有趣的是,我的开发机可以运行与合并后的.exe文件没问题)。

是否有一个已知问题w/ILMerge和扩展方法?这听起来很奇怪,但这是我的代码中唯一改变的东西。

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

系统信息

  • 瞄准的.NET Framework 4.0(我所有的测试机器安装了这个)
  • ILMerge版本2.12.803
  • 开发机:Windows 2008 Server的R2; Visual Studio 2010的专业版
  • 客户机:XP,Win7的,Win8的和(所有的人都得到错误)
+0

做些什么版本的.NET框架的客户端机器已经安装?它是3.5还是甚至是客户端版本? – ChrisF

+0

他们都已经安装了4.0,在您的生成机器上安装了 – Jed

+0

,是否安装了.net 4.5? –

回答

1

如果您有.NET 4.5安装到您的生成计算机上,它会打破,如果你的不小心。

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

Matt Wrock在his post中解释了如何用ILMerge解决这个问题。虽然这是测试版,它应该与该版本一起工作。

+0

我有同样的问题弹出。我添加了1个扩展方法,并在安装了4.5的计算机上构建了目标4.0。即使不使用IL合并,也会出现相同类型的加载异常删除扩展方法解决了问题。 –

1

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" 
相关问题