2013-06-06 2 views
0

последние дни я связался с .NET Framework и, в частности, с языком программирования Visual Basic. Сегодня появилось Исключение, которое я не могу решить. Это исключение BadImageException - конечно, я попросил моего лучшего друга Google за некоторой поддержкой. Из результатов, которые я извлек, кажется, что это ошибка из-за неправильной платформы (x86 против x64). Поэтому я проверил эти параметры и, как я мог убедиться, они настроены на «Любой процессор» (очевидно, это должно означать как x64, так и x86), поэтому, вероятно, это не может быть причиной моей ошибки. У кого-нибудь есть другая идея, как его решить?Visual Basic 2010 BadImageException

Деление 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

Можете ли вы показать код, который вы используете, и выделить, где вызывается исключение? –

+0

Чтобы дать более обоснованный ответ, вам необходимо показать код, который вызывает исключение. Также, где вы получаете исключение (64-битная ОС, 32-разрядная ОС) – Steve

+0

Извините, я забыл об этом. Я использую 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

ответ

1

Это исключение также возникает, когда у вас есть зависимость от сборки, которая помечена как x86 или использует родной 32-битный код. Высокие шансы для этого компонента Chilkat иметь такую ​​настройку или зависимость. Они начали с элементов управления ActiveX, которые обычно пишутся на C++. Доставка .NET-версии легко, написание .NET-оболочки вокруг кода C++ не очень сложно, когда он запускается как ActiveX. Полностью переписать его так только использует управляемый код, однако, является крупным капиталовложением. Поэтому они, вероятно, этого не сделали.

Вы не можете использовать AnyCPU, пока используете этот компонент. Щелкните правой кнопкой мыши проект EXE, вкладку «Свойства», «Компилировать», прокрутите вниз. Нажмите кнопку «Дополнительные параметры компиляции» и измените настройку целевого процессора с AnyCPU на x86. Обратитесь к поставщику и попросите 64-битную версию, если это вас беспокоит. Это не должно.

+0

Вот и все. Большое спасибо. –

0

Развернутая библиотека ChillKat DLL, вероятно, была построена на основе старой версии сетевой инфраструктуры точек, чем используемая вами. Я видел это при обновлении библиотек на моей машине разработки и забыл обновить соответствующие версии в процессе производства.

Это исключение, если формат файла динамической библиотеки ссылка (.dll файл) или исполняемый файл (.exe файл) не соответствует формат, который, как ожидается, в общеязыковой среде выполнения. В частности, исключение при следующих условиях:

Более ранняя версия .NET Framework утилиты, такие как ildasm.exe или Installutil.exe, используется с узлом, который был разработан с позднее версии .NET Framework.

Чтобы устранить это исключение, используйте версию инструмента, которая соответствует версии .NET Framework, которая была использована для . Это может потребовать изменения переменной Path или предоставления полного пути к правильному исполняемому файлу.

Выполняется попытка загрузить неуправляемую библиотеку динамических ссылок или исполняемый файл (например, системную DLL-систему Windows), как если бы это была сборка .NET. Framework.

См http://msdn.microsoft.com/en-us/library/system.badimageformatexception.aspx

0

Для тех, кто еще приходящих через Google, я нашел эту ссылку полезную:

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

Мой вопрос был СОМЫ ссылки на DLL управляемого, который был составлен в .NET4 попытке быть загружен с помощью usercontrol работает в .NET2. Windbg был очень полезен, поскольку ссылка COM была похоронена в сторонней dll, для которой у меня не было источника.

Смежные вопросы