Подтвердить что ты не робот

.net Framework Error (HRESULT 0x8007000B)

У меня есть приложение С#, которое было написано на 32-битной машине Windows XP с Visual Studio 2005. Приложение отлично работает на компьютерах под управлением Windows XP, однако, когда я пытаюсь запустить его на 64-битной Windows 7 профессиональной машине, я получаю следующее диалоговое окно при запуске:

enter image description here

Вот полный текст из деталей.

  See the end of this message for details on invoking 
just-in-time (JIT) debugging instead of this dialog box.

************** Exception Text **************
System.BadImageFormatException: An attempt was made to load a program with an incorrect format. (Exception from HRESULT: 0x8007000B)
   at ICSNeoCSharp.IcsNeoDll.icsneoTxMessages(Int32 hObject, IcsSpyMessage& pMsg, Int32 lNetworkID, Int32 lNumMessages)
   at ICSNeoCSharp.FormDTCApplication.transmitFlowControl(Int32 myArbID) in C:\Documents and Settings\Administrator\Desktop\Adam Stuff ThinkPad\DTC Checker FINAL\frmDTCApp.cs:line 1750
   at ICSNeoCSharp.FormDTCApplication.flowControlTimer_Tick(Object sender, EventArgs e) in C:\Documents and Settings\Administrator\Desktop\Adam Stuff ThinkPad\DTC Checker FINAL\frmDTCApp.cs:line 5166
   at System.Windows.Forms.Timer.OnTick(EventArgs e)
   at System.Windows.Forms.Timer.TimerNativeWindow.WndProc(Message& m)
   at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)


************** Loaded Assemblies **************
mscorlib
    Assembly Version: 2.0.0.0
    Win32 Version: 2.0.50727.5472 (Win7SP1GDR.050727-5400)
    CodeBase: file:///C:/Windows/Microsoft.NET/Framework64/v2.0.50727/mscorlib.dll
----------------------------------------
DTC Checker V1.0
    Assembly Version: 1.0.4960.25549
    Win32 Version: 1.0.4960.25549
    CodeBase: file:///C:/DTC%20Checker%20V1.0%20R3/DTC%20Checker%20V1.0%20R3.exe
----------------------------------------
System.Windows.Forms
    Assembly Version: 2.0.0.0
    Win32 Version: 2.0.50727.5468 (Win7SP1GDR.050727-5400)
    CodeBase: file:///C:/Windows/assembly/GAC_MSIL/System.Windows.Forms/2.0.0.0__b77a5c561934e089/System.Windows.Forms.dll
----------------------------------------
System
    Assembly Version: 2.0.0.0
    Win32 Version: 2.0.50727.5467 (Win7SP1GDR.050727-5400)
    CodeBase: file:///C:/Windows/assembly/GAC_MSIL/System/2.0.0.0__b77a5c561934e089/System.dll
----------------------------------------
System.Drawing
    Assembly Version: 2.0.0.0
    Win32 Version: 2.0.50727.5467 (Win7SP1GDR.050727-5400)
    CodeBase: file:///C:/Windows/assembly/GAC_MSIL/System.Drawing/2.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll
----------------------------------------
Microsoft.Office.Interop.Excel
    Assembly Version: 12.0.0.0
    Win32 Version: 12.0.6600.1000
    CodeBase: file:///C:/Windows/assembly/GAC/Microsoft.Office.Interop.Excel/12.0.0.0__71e9bce111e9429c/Microsoft.Office.Interop.Excel.dll
----------------------------------------

************** JIT Debugging **************
To enable just-in-time (JIT) debugging, the .config file for this
application or computer (machine.config) must have the
jitDebugging value set in the system.windows.forms section.
The application must also be compiled with debugging
enabled.

For example:

<configuration>
    <system.windows.forms jitDebugging="true" />
</configuration>

When JIT debugging is enabled, any unhandled exception
will be sent to the JIT debugger registered on the computer
rather than be handled by this dialog box.

Кто-нибудь еще столкнулся с этой ошибкой и смог ее решить?

4b9b3361

Ответ 1

В то время как основное приложение может быть создано для AnyCPU, вы уверены, что все сборки - AnyCPU? Есть ли у вас какие-либо собственные сборки или сборки, содержащие собственный код? Они построены против x86?

Файл:///C:/Windows/Microsoft.NET/Framework64/v2.0.50727/mscorlib.dll

Это говорит мне, что приложение работает как x64-процесс, но похоже, что есть какая-то сборка, которая не является AnyCPU или x64, что, вероятно, является причиной исключения BadImageFormatException.

Одна вещь, которую вы можете попробовать, - запустить приложение из 32-битной командной строки (c:\windows\SysWow64\cmd.exe), чтобы заставить ее быть 32-разрядным процессом и посмотреть, работает ли это. Если это работает, то определенно есть сборка, которая не является AnyCPU.

Ответ 2

Свойства проекта → Сборка → Цель платформы → x86 может решить эту проблему.

Ответ 3

По моему опыту причиной этой ошибки является версия .Net Framework

Проверьте версию .Net Framework и обновите ее, а также проверьте версию .Net вашего приложения.

Ответ 4

В моем случае у меня была ошибка 0x8007000B, потому что приложение было запущено в 32 бит на моих 64-х Windows 7. Я решил это, перейдя в папку windows/syswov64, изменив версию 64-разрядного MSVCR110.dll с версией MSVCR110.dll 32 бит.

(Просто не забудьте вернуть обратно 64 dll после этого, верните dll 32 каждый раз, когда вам нужно запустить 32-битное приложение).

Вы можете найти версии dll здесь (разархивируйте его перед вставкой в ​​папку syswov64).

Ответ 6

Я хотел бы добавить также мой вывод: я не отмечен в свойствах проекта на вкладке Build a "Предпочитаю 32-разрядный" и получил эту ошибку. После повторной проверки он исчез. У меня есть какой-либо ЦП в качестве цели.

Я знаю, что это не определенное решение, просто решение симптомов, но оно может быть полезным.

Ответ 7

Исправление для меня заключалось в изменении пула приложений в IIS. Откройте свойства пула приложений и перейдите в раздел "Дополнительные настройки"... Затем измените "Включить 32-разрядные приложения" на "Истина". По умолчанию используется False для нового. Часть кода была настроена на "Любой процессор", хотя в прошлом я исправлял проблемы, устанавливая CPU на x86.

Ответ 8

Одна из наиболее распространенных ошибок заключается в том, что мы забыли изменить тестовую программу и программу-оболочку на правильную платформу. См. Изображение ниже.

введите описание изображения здесь

(в верхнем баре отображается платформа x64, но вам нужно убедиться, что она действительно существует во втором изображении...)

введите описание изображения здесь

Убедитесь, что у вас есть правильная конфигурация в Configuration Manager... если ваша конфигурация не совпадает с фактической конфигурацией вашей dll С++, это приведет к ошибке BadImageFormatException.

Я узнал по ошибке после многого поиска... и, наконец, получил это