我接触.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
答案 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)
对于通过谷歌进入的其他人,我发现此链接很有用:
我的问题是对.NET4中编译的托管dll的COM引用,试图通过在.NET2中运行的用户控件加载。 Windbg非常有用,因为COM引用被埋没在我没有源代码的第三方dll中。