Visual Basic 2010 BadImageException

时间:2013-06-06 10:21:23

标签: vb.net

我接触.NET Framework的最后几天,特别是使用Visual Basic编程语言。 今天出现了一个我无法解决的例外。这是一个BadImageException - 当然我向我最好的朋友谷歌寻求一些支持。从结果我已经提取出来,因为错误的平台(x86与x64)似乎是一个错误。所以我检查了这些设置,因为我可以得到它们被设置为'任何CPU'(显然这必须意味着x64和x86),所以它可能不是我的错误的起源。 有没有人有另一个想法如何解决它?

VB分区似乎比Java和C ++小得多,例如尽管如此,我希望任何人都可以帮助我。会让我开心,我很期待你的回答。

抱歉,我忘记了这一点。我正在使用Childkat.ftp2连接到ftp服务器。

ftp As New Chilkat.Ftp2
Try 
    success = ftp.Connect() 
    If (success <> True) Then 
        Dim failReason As Integer 
        failReason = ftp.ConnectFailReason 
        MessageBox.Show(ftp.LastErrorText) 
        End 
    End If 
Catch e As BadImageFormatException 
End Try 

3 个答案:

答案 0 :(得分:1)

当您对标记为x86或使用本机32位代码的程序集具有依赖性时,也会引发此异常。此Chilkat组件具有此类设置或依赖性的高赔率。他们从ActiveX控件开始,这种控件通常用C ++编写。运送它的.NET版本很容易,编写一个围绕C ++代码的.NET包装器起初作为ActiveX时并不是很难。完全重写它,因此使用托管代码是一项重大投资。所以他们可能没那样做。

只要您使用此组件,就无法使用AnyCPU。右键单击EXE项目,“属性”,“编译”选项卡,向下滚动。单击“高级编译选项”按钮,将“目标CPU”设置从AnyCPU更改为x86。如果这困扰你,请联系供应商并要求提供64位版本。它不应该。

答案 1 :(得分:0)

您部署的ChillKat DLL可能是针对较旧版本的dot net框架构建的,而不是您使用的版本。我在开发机器上更新库时忘记了在生产中更新相应的版本。

  

当动态链接的文件格式时抛出此异常   库(.dll文件)或可执行文件(.exe文件)不符合   公共语言运行库所期望的格式。在   特别是,在以下条件下抛出异常:

     

早期版本的.NET Framework实用程序,例如ILDasm.exe或   installutil.exe与用a开发的程序集一起使用   更高版本的.NET Framework。

     

要解决此异常,请使用该工具的版本   对应于以前使用的.NET Framework版本   开发组件。这可能需要修改Path环境   变量或提供正确的完全限定路径   可执行文件。

     

尝试加载非托管动态链接库或   可执行文件(如Windows系统DLL),就好像它是.NET一样   框架组装。

请参阅http://msdn.microsoft.com/en-us/library/system.badimageformatexception.aspx

答案 2 :(得分:0)

对于通过谷歌进入的其他人,我发现此链接很有用:

http://blogs.msdn.com/b/distributedservices/archive/2009/06/17/badimageformatexception-or-typeinitializationexception-when-using-mixed-mode-vc-dlls-in-managed-services-applications.aspx

我的问题是对.NET4中编译的托管dll的COM引用,试图通过在.NET2中运行的用户控件加载。 Windbg非常有用,因为COM引用被埋没在我没有源代码的第三方dll中。