Ошибка fences была сделана попытка загрузить программу имеющую неверный формат

Подробная информация об использовании оперативной
(JIT) отладки вместо данного диалогового
окна содержится в конце этого сообщения.

************** Текст исключения **************
System.BadImageFormatException: Была сделана попытка загрузить программу, имеющую неверный формат. (Исключение из HRESULT: 0x8007000B)
в RE.Form44.DLL(Int32& HCEC, Int32& GEOMETRIA__RE, Int32& TUBI__RE, Int32& PASSO__RE, Double& PASSO_LIBERO__RE, Int32& ALETTE__RE, Int32& ALETTE_Xoption__RE, Int32& FLUIDO__RE, Double& FLUIDO_bis__RE, Int32& COLLETTORE__RE, Int32& COLLETTORE_dd__RE, Int32& CIRCUITI__RE, Double& TUBI_SALTATI__RE, Int32& null15, Double& MAX_dp1_UNO__RE, Double& ALTEZZA_slm__RE, Double& FATTORE_SPORCAMENTO__RE, Double& FATTORE_SICUREZZA__RE, Double& PORTATA2, Double& VELOCITA2, Double& T2IN, Double& UMIDITA2IN, Double& T2OUT, Double& T1IN, Double& T1OUT, Double& PORTATA1, Double& POTENZA, Double& LUNGHEZZA, Double& ALTEZZA, Double& RANGHI, Double& CIRCUITI, Int32& COLLETTORE_LT3, Double& _PORTATA2, Double& _VELOCITA2, Double& _T2IN, Double& _UMIDITA2IN, Double& _T2OUT, Double& _UMIDITA2OUT, Double& _CADUTA_PRESS2, Double& _SHF, Double& _CONT_H2O, Double& _T1IN, Double& _T1OUT, Double& _PORTATA1, Double& _VELOCITA1, Double& _CADUTA_PRESS1, Double& _RESA_NOM, Double& _RESA_MAX, Double& _LUNGHEZZA, Double& _ALTEZZA, Double& _RANGHI, Double& _CIRCUITI, Double& _SUPERFICIE1, Double& _SUPERFICIE2, Double& _VOLUME, Double& _PESO, Double& _PRESSIONE_ATM, Double& _CADUTA_PRESS1_COL, Double& _PORTATA2_kg_s, Double& _PORTATA1_kg_s, Double& _CONT_H2O_IN, Double& _CONT_H2O_OUT, Double& _TITOLO1, String& CODE, String& FLUIDO, Double& PRESSIONE1_Tec, Double& AUX_1, String& AUX_2, Double& AUX_3, String& AUX_4, Double& AUX_5, Double& AUX_6, Double& AUX_7, Double& AUX_8)
в RE.Form1.Load_Set__FILE()
в RE.Form1.Form1_Load(Object sender, EventArgs e)
в System.Windows.Forms.Form.OnLoad(EventArgs e)
в System.Windows.Forms.Control.CreateControl(Boolean fIgnoreVisible)
в System.Windows.Forms.Control.CreateControl()
в System.Windows.Forms.Control.WmShowWindow(Message& m)
в System.Windows.Forms.Control.WndProc(Message& m)
в System.Windows.Forms.Control.ControlNativeWindow.W ndProc(Message& m)
в System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)

************** Загруженные сборки **************
mscorlib
Версия сборки: 2.0.0.0
Версия Win32: 2.0.50727.5420 (Win7SP1.050727-5400)
CodeBase: file:///C:/Windows/Microsoft.NET/Framework64/v2.0.50727/mscorlib.dll
—————————————-
REcalc
Версия сборки: 1.0.3727.5274
Версия Win32: 1.0.3727.5274
CodeBase: file:///C:/Program%20Files%20(x86)/Roen%20Est%20S.p.A/REcalc/REcalc.exe
—————————————-
System.Windows.Forms
Версия сборки: 2.0.0.0
Версия Win32: 2.0.50727.5420 (Win7SP1.050727-5400)
CodeBase: file:///C:/Windows/assembly/GAC_MSIL/System.Windows.Forms/2.0.0.0__b77a5c561934e089/System.Windows.Forms.dll
—————————————-
System
Версия сборки: 2.0.0.0
Версия Win32: 2.0.50727.5420 (Win7SP1.050727-5400)
CodeBase: file:///C:/Windows/assembly/GAC_MSIL/System/2.0.0.0__b77a5c561934e089/System.dll
—————————————-
System.Drawing
Версия сборки: 2.0.0.0
Версия Win32: 2.0.50727.5420 (Win7SP1.050727-5400)
CodeBase: file:///C:/Windows/assembly/GAC_MSIL/System.Drawing/2.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll
—————————————-
Microsoft.VisualBasic
Версия сборки: 8.0.0.0
Версия Win32: 8.0.50727.5420 (Win7SP1.050727-5400)
CodeBase: file:///C:/Windows/assembly/GAC_MSIL/Microsoft.VisualBasic/8.0.0.0__b03f5f7f11d50a3a/Microsoft.VisualBasic.dll
—————————————-
CommonFunctions
Версия сборки: 1.0.0.0
Версия Win32: 1.0.0.0
CodeBase: file:///C:/Program%20Files%20(x86)/Roen%20Est%20S.p.A/REcalc/CommonFunctions.DLL
—————————————-
mscorlib.resources
Версия сборки: 2.0.0.0
Версия Win32: 2.0.50727.5420 (Win7SP1.050727-5400)
CodeBase: file:///C:/Windows/Microsoft.NET/Framework64/v2.0.50727/mscorlib.dll
—————————————-
System.Windows.Forms.resources
Версия сборки: 2.0.0.0
Версия Win32: 2.0.50727.4927 (NetFXspW7.050727-4900)
CodeBase: file:///C:/Windows/assembly/GAC_MSIL/System.Windows.Forms.resources/2.0.0.0_ru_b77a5c561934e089/System.Windows.Forms.resources.dll
—————————————-

************** Оперативная отладка (JIT) **************
Для подключения оперативной (JIT) отладки файл .config данного
приложения или компьютера (machine.config) должен иметь
значение jitDebugging, установленное в секции system.windows.forms.
Приложение также должно быть скомпилировано с включенной
отладкой.

Например:

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

При включенной отладке JIT любое необрабатываемое исключение
пересылается отладчику JIT, зарегистрированному на данном компьютере,
вместо того чтобы обрабатываться данным диалоговым окном.

Программисты, занимающиеся разработкой различного программного обеспечения в интегрированной среде разработки Microsoft Visual Studio C++, могут столкнуться с такой неприятностью, как ошибка 0x8007000B. При ее появлении перед пользователями может появиться окошко со следующим текстом:

Была сделана попытка загрузить программу, имеющую неверный формат. (Исключение из HRESULT: 0x8007000B)

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

HRESULT: 0x8007000B

Способ устранения ошибки 0x8007000B

В данной статье мы рассмотрим одну из ситуаций, при которой может возникать код ошибки 0x8007000B. Итак, давайте предположим, что вы занимаетесь разработкой приложения в Visual Studio Express, для нормальной работы которому требуется применение внешней библиотеки динамической компоновки(DLL-файл). Вы проверили свое приложение – оно работает на вашей машине.

Далее вы предприняли попытку запустить данное приложение на компьютере другого пользователя либо на своей иной машине, которая работает на 64-битной операционной системе. Однако, при запуске перед вами появилось неприятное сообщение «Была сделана попытка загрузить программу, имеющую неверный формат. (Исключение из HRESULT: 0x8007000B)».

В данной ситуации, скорее всего, вы увидели ошибку HRESULT: 0x8007000B из-за того, что внешняя динамическая библиотека, к функциям в которой выполняется обращение, была скомпилирована, чтобы работать под 32-битными операционными системами. Если во время компиляции вы не не укажете целевую платформу, то приложение будет нацелено на работу под 32-битной либо под 64-битную операционной системой. Соответственно, 64-битное приложение сможет работать только с 64-битными DLL.

Чтобы избавиться от ошибки 0x8007000B, вам нужно вернуться в настройки проекта, после чего поменять целевую платформу на «x86». Вероятно, ранее у вас там была выбрана настройка «Любой ЦП», что и привело к компиляции x64 приложения. Как только вы перекомпилируете приложение, оно спокойно сможет работать на любом ПК в 32-битном режиме, а также у него появится возможность производить обращения к нужной вам 32-битной динамической библиотеке. После этого ошибка к кодом 0x8007000B будет устранена.

I’m calling functions from a 32-bit unmanaged DLL on a 64-bit system. What I get is:

BadImageFormatException: An attempt was made to load a program with an incorrect format. (Exception from HRESULT: 0x8007000B)

At first, I had my projects set to the Any CPU platform, so I changed them both to x86, but this error is still occurring. That’s really the only fix I know for this.

The DLLs aren’t corrupt or anything, because I can use them with other programs (that I don’t have the source to). I thought that perhaps it wasn’t finding a dependency, but I checked and they’re all there. Plus, wouldn’t it throw a DllNotFoundException in that case?

What else can I do? And before you say «Use a 64-bit unmanaged DLL instead,» let me point out that there isn’t one. ;)

asked Jan 7, 2010 at 21:21

David Brown's user avatar

David BrownDavid Brown

35.1k11 gold badges84 silver badges129 bronze badges

4

If you try to run 32-bit applications on IIS 7 (and/or 64-bit OS machine), you will get the same error. So, from the IIS 7, right click on the applications’ application pool and go to «advanced settings» and change «Enable 32-Bit Applications» to «TRUE».

Restart your website and it should work.

enter image description here

viggity's user avatar

viggity

14.9k7 gold badges86 silver badges94 bronze badges

answered Jan 6, 2011 at 20:08

bluwater2001's user avatar

bluwater2001bluwater2001

7,7895 gold badges24 silver badges21 bronze badges

7

Somehow, the Build checkbox in the Configuration Manager had been unchecked for my executable, so it was still running with the old Any CPU build. After I fixed that, Visual Studio complained that it couldn’t debug the assembly, but that was fixed with a restart.

answered Jan 8, 2010 at 1:59

David Brown's user avatar

David BrownDavid Brown

35.1k11 gold badges84 silver badges129 bronze badges

4

In Visual Studio, Right Click your project -> On the left pane click the Build tab,

Project properties, build tab

under Platform Target select x86 (or more generally the architecture to match with the library you are linking to)

Project properties, platform target

user's user avatar

user

3,9365 gold badges17 silver badges34 bronze badges

answered Oct 21, 2013 at 7:35

Marvin Thobejane's user avatar

Marvin ThobejaneMarvin Thobejane

1,9801 gold badge18 silver badges13 bronze badges

5

If you encounter this error when you click green arrow button to run the application, but still want to run the app in 64 bit. You can do this in VS 2013, 2015, 2017, and 2019

Go to: Tools > Options > Projects and Solutions > Web Projects > Use the 64 bit version of IIS Express

Or you can do it per project at Project Properties > Web > Bitness
IIS Express Bitness

Adam Nofsinger's user avatar

answered Jul 5, 2016 at 13:46

paibamboo's user avatar

paibamboopaibamboo

2,75417 silver badges16 bronze badges

7

I just had this problem also. Tried all the suggestions here, but they didn’t help.

I found another thing to check that fixed it for me. In Visual Studio, right-click on the project and open «Properties». Click on the «Compile» (or «Build») tab and then click on «Advanced Compile Options» at the bottom.

Check the dropdown «Target CPU». It should match the «Platform» you are building. That is, if you are building «Any CPU» then «Target CPU» should say «Any CPU». Go through all of your Platforms by making them active and check this setting.

frido's user avatar

frido

12.2k5 gold badges36 silver badges54 bronze badges

answered Dec 12, 2011 at 19:13

Denis's user avatar

DenisDenis

11.7k15 gold badges84 silver badges149 bronze badges

3

If you are using Any CPU, you might encounter this issue if the Prefer 32-bit option is checked:

Make sure you uncheck this option in the project’s property’s Build tab!

enter image description here

Denis's user avatar

Denis

11.7k15 gold badges84 silver badges149 bronze badges

answered Sep 24, 2013 at 13:55

Drew Noakes's user avatar

Drew NoakesDrew Noakes

294k162 gold badges669 silver badges736 bronze badges

5

In my case I was using a native DLL in C#. This DLL depended on couple of other DLLs that were missing. Once those other DLLs were added everything worked.

answered Dec 11, 2012 at 20:30

Tomasz Stypich's user avatar

1

  1. Go to: Tools → Options → Projects and Solutions → Web Projects → Use the 64 bit version of IIS Express.
  2. Change below setting for web service project:

enter image description here

Timothy G.'s user avatar

Timothy G.

5,0596 gold badges29 silver badges43 bronze badges

answered Apr 30, 2020 at 6:33

Mani's user avatar

ManiMani

3272 silver badges10 bronze badges

1

A bit off topic for this post, but searching for this error message brought me here.

If you are building through team system and getting this error, the build definition process tab has a «MSBuild Platform» setting. If this is set to «Auto», you may experience this problem. Changing it to «X86» can also resolve the error.

answered Oct 5, 2012 at 13:55

StingyJack's user avatar

StingyJackStingyJack

18.8k9 gold badges62 silver badges120 bronze badges

1

We had a similar issue and we managed to fix it by setting the Platform target to x86. Project Properties-> build

answered Aug 19, 2019 at 2:34

Joe's user avatar

JoeJoe

3392 silver badges3 bronze badges

2

With Visual Studio 2019 I had a similar issue when I wanted to run tests (MSTest directly from VS). In my case I only had an x64 native DLL and I received this error message. First, I thought it is because Visual Studio runs as x86 but this page helped me to solve the issue:

Run unit test as a 64-bit process

It says

  1. Set your projects to Any CPU
  2. Explicitly define processor architecture

I did both (I explicitly set x64) and then my tests started to work.

Set processor architecture explicitly to x64

answered Aug 29, 2020 at 9:04

luviktor's user avatar

luviktorluviktor

2,2202 gold badges22 silver badges23 bronze badges

1

Building on the answer of @paibamboo

He said: Go to: Tools > Options > Projects and Solutions > Web Projects > Use the 64 bit version of IIS Express

My coworker had this box checked (he explicitly looked for it), but had the error message in question. After some hours he unchecked the box and checked it again. Lo and behold: The code now ran with success.

It seems, that there are two places where the state of this box ist saved which became out of sync. Un- and rechecking it synced it again.

Question for more knowledgable users: Was there an update or something last week (for VS 2015) which de-synced the states?

answered Oct 16, 2017 at 14:42

MilConDoin's user avatar

MilConDoinMilConDoin

7146 silver badges24 bronze badges

Also see this answer, which solved the same problem for me.

Posted by Luis Mack on 5/12/2010 at 8:50 AM I’ve found the same problem, only for a specific project when compiling on a 64-bit machine. A fix that SEEMS to work is to manually alter one character in the image stream EVERY TIME the usercontrol or form is edited in the designer

 AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w

Change to

 AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj0yLjAuMC4w

That is 00LjAuMC4w back to 0yLjAuMC4w at the end of the line (00 back to 0y)

Community's user avatar

answered Mar 21, 2012 at 13:45

Shaul Behr's user avatar

Shaul BehrShaul Behr

36.1k69 gold badges248 silver badges381 bronze badges

0

In my case it was wrong content of the file. DLL was downloaded from the web, but content of the DLL was HTML page :D
Try to check if it is binary file, if it seems like correct DLL :)

answered Jun 22, 2016 at 7:42

Ludwo's user avatar

LudwoLudwo

5,9434 gold badges32 silver badges48 bronze badges

In my case, I am using a tiny .exe that reloads the referenced DLLs via Reflection. So I just do these steps which saves my day:

From project properties on solution explorer, at build tab, I choose target platfrom x86

answered Feb 15, 2012 at 9:21

asdf_enel_hak's user avatar

asdf_enel_hakasdf_enel_hak

7,3815 gold badges42 silver badges83 bronze badges

In my case, I was running tests through MSTest and found out that I was deploying both a 32-bit and 64-bit DLL to the test directory. The program was favoring the 64-bit DLL and causing it to fail.

TL;DR Make sure you only deploy 32-bit DLLs to tests.

answered May 7, 2015 at 19:30

Mike Cluck's user avatar

Mike CluckMike Cluck

31.4k13 gold badges79 silver badges90 bronze badges

If you are importing unmanaged DLL then use

CallingConvention = CallingConvention.Cdecl 

in your DLL import method.

answered Oct 10, 2019 at 10:31

Ramkumar Shanmugam's user avatar

I got this issue solved in the ‘Windows’ way. After checking all my settings, cleaning the solution and rebuilding it, I simply close the solution and reopened it. Then it worked, so VS probably didn’t get rid of some stuff during cleaning.
When logical solutions don’t work, I usually turn to illogical (or seemingly illogical) ones. Windows doesn’t let me down. :)

answered Apr 30, 2013 at 9:38

user1771386's user avatar

I was able to fix this issue by matching my build version to the .NET version on the server.

I double clicked the .exe just to see what would happen and it told me to install 4.5….

So I downgraded to 4.0 and it worked!

So make sure your versions match. It ran on my dev box fine, but server had older .NET version.

answered Dec 16, 2015 at 21:58

Nateous's user avatar

NateousNateous

7579 silver badges22 bronze badges

We were having the same issue in .NET core. The solution was to download 32-bit .netcore runtime, and having your project target x86

In your csproj file add

  <PropertyGroup>
    <PlatformTarget>x86</PlatformTarget>  
  </PropertyGroup>

  <PropertyGroup>
    <RunCommand Condition="'$(PlatformTarget)' == 'x86'">$(MSBuildProgramFiles32)dotnetdotnet</RunCommand>    
  </PropertyGroup>

This was used for a Windows machine, you’d have to adjust paths and such for Linux/OSX

answered Jun 27, 2019 at 20:28

Samir Banjanovic's user avatar

In my case, I didn’t have the correct project set as the start-up project. I went to solution settings and selected the correct startup project and it worked

answered Mar 31, 2021 at 23:48

Conner's user avatar

ConnerConner

3223 silver badges10 bronze badges

In my case this same error happened after publishing. I had published before with another platform configuration.

The solution was to cleanup the publish folder first, then it worked.

(alternatively set the «delete existing files» option to true)

answered Jun 29, 2021 at 8:17

Allie's user avatar

AllieAllie

9221 gold badge9 silver badges16 bronze badges

Another reason that may cause this exception, is the C++ Redistributables missing for the target platform of your Dll. I had a tough time finding out when testing on a VM.

answered Dec 1, 2021 at 13:24

crankedrelic's user avatar

crankedreliccrankedrelic

4331 gold badge6 silver badges14 bronze badges

Please also note that the version of used dll file(s) (in my case «WebView2Loader.dll») which is in use is very crucial. I had almost the same problem with «Microsoft.WebView2.FixedVersionRuntime.101.0.1210.39.x64» when I tried to use the WebView2 component in the MMC Snap-Ins with types of «HTMLView» or «FormView».

I just copied the referenced dll file in a proper path that was accessible for the project (you could just put it beside your project output files first to test it) and then WebView2 browser started to function as expected. Microsoft error messages sometimes (at least in my case) was a little bit misleading and did not convey enough and to the point information.

I received «BadImageFormatException» that normally occurs when you mix platform targets (for example using a dll file compiled in X64 in an application that targeted for x86 or vice versa) or mix native code and .NET but that was not my problem at all. I hope this help one who may stuck in.

answered May 18, 2022 at 8:06

amirfg's user avatar

amirfgamirfg

2521 gold badge6 silver badges21 bronze badges

I also had this issue when I want to call a native DLL from C#/WPA. The below steps work for my project. Properities->Build->Platform target x64/x86(change this option, then works).

lee-m's user avatar

lee-m

2,22817 silver badges29 bronze badges

answered Jul 31, 2022 at 14:04

GuangJun Liu's user avatar

I’m calling functions from a 32-bit unmanaged DLL on a 64-bit system. What I get is:

BadImageFormatException: An attempt was made to load a program with an incorrect format. (Exception from HRESULT: 0x8007000B)

At first, I had my projects set to the Any CPU platform, so I changed them both to x86, but this error is still occurring. That’s really the only fix I know for this.

The DLLs aren’t corrupt or anything, because I can use them with other programs (that I don’t have the source to). I thought that perhaps it wasn’t finding a dependency, but I checked and they’re all there. Plus, wouldn’t it throw a DllNotFoundException in that case?

What else can I do? And before you say «Use a 64-bit unmanaged DLL instead,» let me point out that there isn’t one. ;)

asked Jan 7, 2010 at 21:21

David Brown's user avatar

David BrownDavid Brown

35.1k11 gold badges84 silver badges129 bronze badges

4

If you try to run 32-bit applications on IIS 7 (and/or 64-bit OS machine), you will get the same error. So, from the IIS 7, right click on the applications’ application pool and go to «advanced settings» and change «Enable 32-Bit Applications» to «TRUE».

Restart your website and it should work.

enter image description here

viggity's user avatar

viggity

14.9k7 gold badges86 silver badges94 bronze badges

answered Jan 6, 2011 at 20:08

bluwater2001's user avatar

bluwater2001bluwater2001

7,7895 gold badges24 silver badges21 bronze badges

7

Somehow, the Build checkbox in the Configuration Manager had been unchecked for my executable, so it was still running with the old Any CPU build. After I fixed that, Visual Studio complained that it couldn’t debug the assembly, but that was fixed with a restart.

answered Jan 8, 2010 at 1:59

David Brown's user avatar

David BrownDavid Brown

35.1k11 gold badges84 silver badges129 bronze badges

4

In Visual Studio, Right Click your project -> On the left pane click the Build tab,

Project properties, build tab

under Platform Target select x86 (or more generally the architecture to match with the library you are linking to)

Project properties, platform target

user's user avatar

user

3,9365 gold badges17 silver badges34 bronze badges

answered Oct 21, 2013 at 7:35

Marvin Thobejane's user avatar

Marvin ThobejaneMarvin Thobejane

1,9801 gold badge18 silver badges13 bronze badges

5

If you encounter this error when you click green arrow button to run the application, but still want to run the app in 64 bit. You can do this in VS 2013, 2015, 2017, and 2019

Go to: Tools > Options > Projects and Solutions > Web Projects > Use the 64 bit version of IIS Express

Or you can do it per project at Project Properties > Web > Bitness
IIS Express Bitness

Adam Nofsinger's user avatar

answered Jul 5, 2016 at 13:46

paibamboo's user avatar

paibamboopaibamboo

2,75417 silver badges16 bronze badges

7

I just had this problem also. Tried all the suggestions here, but they didn’t help.

I found another thing to check that fixed it for me. In Visual Studio, right-click on the project and open «Properties». Click on the «Compile» (or «Build») tab and then click on «Advanced Compile Options» at the bottom.

Check the dropdown «Target CPU». It should match the «Platform» you are building. That is, if you are building «Any CPU» then «Target CPU» should say «Any CPU». Go through all of your Platforms by making them active and check this setting.

frido's user avatar

frido

12.2k5 gold badges36 silver badges54 bronze badges

answered Dec 12, 2011 at 19:13

Denis's user avatar

DenisDenis

11.7k15 gold badges84 silver badges149 bronze badges

3

If you are using Any CPU, you might encounter this issue if the Prefer 32-bit option is checked:

Make sure you uncheck this option in the project’s property’s Build tab!

enter image description here

Denis's user avatar

Denis

11.7k15 gold badges84 silver badges149 bronze badges

answered Sep 24, 2013 at 13:55

Drew Noakes's user avatar

Drew NoakesDrew Noakes

294k162 gold badges669 silver badges736 bronze badges

5

In my case I was using a native DLL in C#. This DLL depended on couple of other DLLs that were missing. Once those other DLLs were added everything worked.

answered Dec 11, 2012 at 20:30

Tomasz Stypich's user avatar

1

  1. Go to: Tools → Options → Projects and Solutions → Web Projects → Use the 64 bit version of IIS Express.
  2. Change below setting for web service project:

enter image description here

Timothy G.'s user avatar

Timothy G.

5,0596 gold badges29 silver badges43 bronze badges

answered Apr 30, 2020 at 6:33

Mani's user avatar

ManiMani

3272 silver badges10 bronze badges

1

A bit off topic for this post, but searching for this error message brought me here.

If you are building through team system and getting this error, the build definition process tab has a «MSBuild Platform» setting. If this is set to «Auto», you may experience this problem. Changing it to «X86» can also resolve the error.

answered Oct 5, 2012 at 13:55

StingyJack's user avatar

StingyJackStingyJack

18.8k9 gold badges62 silver badges120 bronze badges

1

We had a similar issue and we managed to fix it by setting the Platform target to x86. Project Properties-> build

answered Aug 19, 2019 at 2:34

Joe's user avatar

JoeJoe

3392 silver badges3 bronze badges

2

With Visual Studio 2019 I had a similar issue when I wanted to run tests (MSTest directly from VS). In my case I only had an x64 native DLL and I received this error message. First, I thought it is because Visual Studio runs as x86 but this page helped me to solve the issue:

Run unit test as a 64-bit process

It says

  1. Set your projects to Any CPU
  2. Explicitly define processor architecture

I did both (I explicitly set x64) and then my tests started to work.

Set processor architecture explicitly to x64

answered Aug 29, 2020 at 9:04

luviktor's user avatar

luviktorluviktor

2,2202 gold badges22 silver badges23 bronze badges

1

Building on the answer of @paibamboo

He said: Go to: Tools > Options > Projects and Solutions > Web Projects > Use the 64 bit version of IIS Express

My coworker had this box checked (he explicitly looked for it), but had the error message in question. After some hours he unchecked the box and checked it again. Lo and behold: The code now ran with success.

It seems, that there are two places where the state of this box ist saved which became out of sync. Un- and rechecking it synced it again.

Question for more knowledgable users: Was there an update or something last week (for VS 2015) which de-synced the states?

answered Oct 16, 2017 at 14:42

MilConDoin's user avatar

MilConDoinMilConDoin

7146 silver badges24 bronze badges

Also see this answer, which solved the same problem for me.

Posted by Luis Mack on 5/12/2010 at 8:50 AM I’ve found the same problem, only for a specific project when compiling on a 64-bit machine. A fix that SEEMS to work is to manually alter one character in the image stream EVERY TIME the usercontrol or form is edited in the designer

 AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w

Change to

 AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj0yLjAuMC4w

That is 00LjAuMC4w back to 0yLjAuMC4w at the end of the line (00 back to 0y)

Community's user avatar

answered Mar 21, 2012 at 13:45

Shaul Behr's user avatar

Shaul BehrShaul Behr

36.1k69 gold badges248 silver badges381 bronze badges

0

In my case it was wrong content of the file. DLL was downloaded from the web, but content of the DLL was HTML page :D
Try to check if it is binary file, if it seems like correct DLL :)

answered Jun 22, 2016 at 7:42

Ludwo's user avatar

LudwoLudwo

5,9434 gold badges32 silver badges48 bronze badges

In my case, I am using a tiny .exe that reloads the referenced DLLs via Reflection. So I just do these steps which saves my day:

From project properties on solution explorer, at build tab, I choose target platfrom x86

answered Feb 15, 2012 at 9:21

asdf_enel_hak's user avatar

asdf_enel_hakasdf_enel_hak

7,3815 gold badges42 silver badges83 bronze badges

In my case, I was running tests through MSTest and found out that I was deploying both a 32-bit and 64-bit DLL to the test directory. The program was favoring the 64-bit DLL and causing it to fail.

TL;DR Make sure you only deploy 32-bit DLLs to tests.

answered May 7, 2015 at 19:30

Mike Cluck's user avatar

Mike CluckMike Cluck

31.4k13 gold badges79 silver badges90 bronze badges

If you are importing unmanaged DLL then use

CallingConvention = CallingConvention.Cdecl 

in your DLL import method.

answered Oct 10, 2019 at 10:31

Ramkumar Shanmugam's user avatar

I got this issue solved in the ‘Windows’ way. After checking all my settings, cleaning the solution and rebuilding it, I simply close the solution and reopened it. Then it worked, so VS probably didn’t get rid of some stuff during cleaning.
When logical solutions don’t work, I usually turn to illogical (or seemingly illogical) ones. Windows doesn’t let me down. :)

answered Apr 30, 2013 at 9:38

user1771386's user avatar

I was able to fix this issue by matching my build version to the .NET version on the server.

I double clicked the .exe just to see what would happen and it told me to install 4.5….

So I downgraded to 4.0 and it worked!

So make sure your versions match. It ran on my dev box fine, but server had older .NET version.

answered Dec 16, 2015 at 21:58

Nateous's user avatar

NateousNateous

7579 silver badges22 bronze badges

We were having the same issue in .NET core. The solution was to download 32-bit .netcore runtime, and having your project target x86

In your csproj file add

  <PropertyGroup>
    <PlatformTarget>x86</PlatformTarget>  
  </PropertyGroup>

  <PropertyGroup>
    <RunCommand Condition="'$(PlatformTarget)' == 'x86'">$(MSBuildProgramFiles32)dotnetdotnet</RunCommand>    
  </PropertyGroup>

This was used for a Windows machine, you’d have to adjust paths and such for Linux/OSX

answered Jun 27, 2019 at 20:28

Samir Banjanovic's user avatar

In my case, I didn’t have the correct project set as the start-up project. I went to solution settings and selected the correct startup project and it worked

answered Mar 31, 2021 at 23:48

Conner's user avatar

ConnerConner

3223 silver badges10 bronze badges

In my case this same error happened after publishing. I had published before with another platform configuration.

The solution was to cleanup the publish folder first, then it worked.

(alternatively set the «delete existing files» option to true)

answered Jun 29, 2021 at 8:17

Allie's user avatar

AllieAllie

9221 gold badge9 silver badges16 bronze badges

Another reason that may cause this exception, is the C++ Redistributables missing for the target platform of your Dll. I had a tough time finding out when testing on a VM.

answered Dec 1, 2021 at 13:24

crankedrelic's user avatar

crankedreliccrankedrelic

4331 gold badge6 silver badges14 bronze badges

Please also note that the version of used dll file(s) (in my case «WebView2Loader.dll») which is in use is very crucial. I had almost the same problem with «Microsoft.WebView2.FixedVersionRuntime.101.0.1210.39.x64» when I tried to use the WebView2 component in the MMC Snap-Ins with types of «HTMLView» or «FormView».

I just copied the referenced dll file in a proper path that was accessible for the project (you could just put it beside your project output files first to test it) and then WebView2 browser started to function as expected. Microsoft error messages sometimes (at least in my case) was a little bit misleading and did not convey enough and to the point information.

I received «BadImageFormatException» that normally occurs when you mix platform targets (for example using a dll file compiled in X64 in an application that targeted for x86 or vice versa) or mix native code and .NET but that was not my problem at all. I hope this help one who may stuck in.

answered May 18, 2022 at 8:06

amirfg's user avatar

amirfgamirfg

2521 gold badge6 silver badges21 bronze badges

I also had this issue when I want to call a native DLL from C#/WPA. The below steps work for my project. Properities->Build->Platform target x64/x86(change this option, then works).

lee-m's user avatar

lee-m

2,22817 silver badges29 bronze badges

answered Jul 31, 2022 at 14:04

GuangJun Liu's user avatar

На чтение 4 мин. Просмотров 164 Опубликовано 03.09.2019

Если вы получаете код ошибки ERROR_BAD_FORMAT 11 с сообщением Попытка загрузить программу с неверным форматом , выполните действия по устранению неполадок, перечисленные в эта статья, чтобы исправить это.

Содержание

  1. ERROR_BAD_FORMAT: фон
  2. Как исправить ошибку 10: ERROR_BAD_FORMAT
  3. ERROR_BAD_FORMAT на платформах .NET
  4. Исправить ERROR_BAD_FORMAT в Windows 10

ERROR_BAD_FORMAT: фон

Ошибка «Была сделана попытка загрузить программу с неверным форматом» – довольно загадочный код ошибки. Существует не так много информации об этом, за исключением различных сообщений на форуме, где пользователи описывают проблему.

Код ошибки ERROR_BAD_FORMAT affects затрагивает в основном машины Windows 7, но иногда это также может происходить в Windows 10. Обычно это происходит, когда пользователи пытаются запустить приложение или программу на своих ПК или серверах Windows.

Код ошибки 11 часто вызывается проблемами с распространяемым пакетом VS, проблемами несовместимости программ, неправильными изменениями реестра и т. Д.

Как исправить ошибку 10: ERROR_BAD_FORMAT

ERROR_BAD_FORMAT на платформах .NET

Решение 1. Включение 32-разрядной совместимости

Пользователи сообщают, что эта ошибка в основном возникает из-за проблем несовместимости DLL, вызванных приложениями, работающими в Visual Studio, установленными в 64-разрядных операционных системах со значением TargetCPU = Any CPU. Другими словами, приложения пытаются загрузить библиотеки DLL, созданные для 32-разрядных платформ, на компьютерах x64 и наоборот.

Чтобы решить эту проблему, вам нужно настроить утилиту для запуска в качестве 32-битного .NET-процесса с использованием CORFLAGS.

  1. Загрузите CORFLAGS со страницы поддержки Microsoft
  2. Запустите его следующим образом, чтобы включить 32-битный режим выполнения: corflags utility.exe/32Bit +
  3. Используйте/32Bit- в приведенной выше командной строке, чтобы выключить его.

Вы также можете включить 32-битную совместимость в приложении формы Windows. Просто щелкните правой кнопкой мыши Project> перейдите в Properties> Build> check Prefer 32-bit.

Кроме того, вы также можете использовать опцию «Любой процессор» и использовать выделенный код, чтобы определить, какую DLL использовать. Таким образом, вы будете использовать одну сборку для обработки как 32-битных, так и 64-битных платформ. Вот код для использования:

if (Environment.Is64BitProcess)
{
// вызов MiniDumpWriteDump
}
еще
{
// вызов MiniDumpWriteDumpX86
}

Вы также можете использовать условия препроцессора, но в этом случае вам нужно скомпилировать две разные сборки. Другими словами, скомпилируйте 32-разрядную сборку для 32-разрядных платформ и отдельную 64-разрядную сборку для 64-разрядных платформ.

Решение 2. Установите правильный распространяемый пакет VS

На вашем целевом ПК может не быть установлен соответствующий распространяемый пакет VS. Перейдите на веб-страницу Microsoft и установите соответствующую версию VS Redistributable Package в вашей системе.

Исправить ERROR_BAD_FORMAT в Windows 10

В Windows 10 ошибка «Попытка загрузить программу с неверным форматом» обычно возникает при запуске и связана с проблемами несовместимости программного обеспечения. Пользователи подтверждают, что эта проблема часто возникает при использовании инструментов замены в меню «Пуск».

Если вы используете замену меню «Пуск» в Windows 10, удалите его, и это должно помочь.

Кроме того, не забудьте восстановить реестр . Самый простой способ восстановить реестр – использовать специальный инструмент, такой как CCleaner. Не забудьте сначала сделать резервную копию реестра, если что-то пойдет не так. Если вы не установили очиститель реестра на свой компьютер, ознакомьтесь с нашей статьей о лучших очистителях реестра для использования на ПК с Windows 10.

Вы также можете использовать средство проверки системных файлов Microsoft для проверки повреждений системных файлов. Вот как запустить сканирование SFC:

1. Перейдите в Пуск>, введите cmd >, щелкните правой кнопкой мыши Командную строку> выберите Запуск от имени администратора.

2. Теперь введите команду sfc/scannow

3. Дождитесь завершения процесса сканирования и перезагрузите компьютер. Все поврежденные файлы будут заменены при перезагрузке.

Мы надеемся, что перечисленные выше решения помогли вам исправить код ошибки ERROR_BAD_FORMAT 10. Как всегда, если вы сталкивались с другими решениями, чтобы решить эту проблему, вы можете перечислить шаги устранения неполадок в комментариях ниже.

«Была сделана попытка загрузить программу, имеющую неверный формат», даже если платформы одинаковые



Я вызываю функции из 32-разрядной неуправляемой DLL на 64-разрядной системе. Что я получаю это:

BadImageFormatException: была сделана попытка загрузить программу с неверным форматом. (Исключение из HRESULT: 0x8007000B)

сначала у меня были свои проекты, настроенные на любую платформу процессора, поэтому я изменил их на x86, но эта ошибка все еще происходит. Это действительно единственное исправление, которое я знаю для этого.

библиотеки DLL не повреждены или что-то еще, потому что я могу использовать их с другими программами (что у меня нет источника). Я думал, что, возможно, это не было найти зависимость, но я проверил, и они все там. Кроме того, разве это не бросит DllNotFoundException в этом случае?

что еще я могу сделать? И прежде чем вы скажете: «вместо этого используйте 64-разрядную неуправляемую DLL», позвольте мне указать, что ее нет. ;)


1739  


15  

15 ответов:

при попытке запустить 32-разрядные приложения на IIS 7 (и / или 64-разрядной ОС), вы получите ту же ошибку. Итак, из IIS 7 щелкните правой кнопкой мыши на пуле приложений приложений и перейдите в раздел «Дополнительные настройки» и измените «включить 32-разрядные приложения» на «TRUE».

перезагрузите ваш сайт и он должен работать.

enter image description here

Почему-то Build флажок в Диспетчере конфигураций был снят для моего исполняемого файла, поэтому он все еще работал со старой сборкой любого процессора. После того, как я исправил это, Visual Studio пожаловался, что он не может отладить сборку, но это было исправлено с помощью перезагрузки.

на Visual Studio, щелкните правой кнопкой мыши проект -> на левой панели нажмите кнопку Build tab,

Project properties, build tab

под Целевой Платформы выберите x86 (или в более общем плане архитектура чтобы соответствовать библиотеке, на которую вы ссылаетесь)

Project properties, platform target

надеюсь, это кому-то поможет! :)

У меня тоже была эта проблема. Пробовал все предложения здесь, но они не помогли.

Я нашел еще одну вещь, чтобы проверить, что установил его для меня. В Visual Studio щелкните правой кнопкой мыши на проекте и откройте «Свойства». Нажмите на вкладку «компиляция», а затем нажмите на кнопку» Дополнительные параметры компиляции » в нижней части.

Проверьте выпадающее меню «целевой процессор». Он должен соответствовать «платформе», которую вы строите. То есть, если вы создаете «любой процессор», то «целевой процессор» должен сказать » любой ЦПУ.» Пройдите через все ваши платформы, сделав их активными и проверьте эту настройку.

Если вы столкнулись с этой ошибкой, когда вы нажимаете зеленую кнопку со стрелкой, чтобы запустить приложение, но все еще хотите запустить приложение в 64-разрядной версии. Вы можете сделать это в VS 2013 или 2015

перейдите в раздел: Инструменты > Параметры > проекты и решения > веб-проекты > используйте 64-разрядную версию IIS Express

Если вы используете любой ЦП, вы можете столкнуться с этой проблемой, если предпочитаю 32-бит проверил:

убедитесь, что вы убрать этот параметр в свойства проекта Build tab!

enter image description here

немного не по теме для этого поста, но поиск этого сообщения об ошибке привел меня сюда.

Если вы строите через team system и получаете эту ошибку, вкладка процесс определения сборки имеет параметр «платформа MSBuild». Если установлено значение «авто», может возникнуть эта проблема. Изменение его на » X86 » также может устранить ошибку.

в моем случае я использовал собственную DLL в C#. Эта DLL зависела от нескольких других DLL, которые отсутствовали. После того, как эти другие DLL были добавлены все работало.

см. Также ответ, которые решали ту же проблему для меня.

опубликовано Luis Mack на 5/12/2010 в 8: 50 AM я нашел ту же проблему, только для конкретного проекта при компиляции на 64-разрядной машине. Исправление, которое, кажется, работает, чтобы вручную изменить один символ в потоке изображений каждый раз, когда usercontrol или форма редактируется в конструкторе

 AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w

заменить на

 AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj0yLjAuMC4w

это 00LjAuMC4w на 0yLjAuMC4w в конце строки (00 назад к 0y)

в моем случае, я использую крошечный .exe, который загружает библиотеки DLL, которые ссылаются посредством отражения. Поэтому я просто делаю эти шаги, которые спасают мой день:

в свойствах проекта в обозревателе решений щелкните на вкладке построить, Я выбираю целевая платформа х86

в моем случае я запускал тесты через MSTest и обнаружил, что я развертываю как 32-разрядную, так и 64-разрядную DLL в тестовый каталог. Программа предпочитала 64-разрядную DLL и вызывала ее сбой.

TL; DR убедитесь, что вы развертываете только 32-разрядные библиотеки DLL для тестов.

Я получил эту проблему решена в «Windows» Способ. После проверки всех моих настроек, очистки решения и его восстановления я просто закрываю решение и снова открываю его. Затем это сработало, поэтому VS, вероятно, не избавился от некоторых вещей во время очистки.
Когда логические решения не работают, я обычно обращаюсь к нелогичным (или кажущимся нелогичными). Окна меня не подводят. :)

Я смог исправить эту проблему, сопоставив мою версию сборки с версией .NET на сервере.

Я дважды щелкнул .exe просто чтобы посмотреть, что произойдет, и он сказал мне установить 4.5….

Так что я понизил до 4.0 и это сработало!

поэтому убедитесь, что ваши версии совпадают. Он работал на моем dev box отлично, но сервер имел более старую версию .NET.

в моем случае это было неправильное содержимое файла. DLL был загружен из интернета, но содержание DLL было HTML page :D
Попробуйте проверить, если это двоичный файл, если это кажется правильным DLL :)

основываясь на ответе @paibamboo

Он сказал: перейдите в раздел: Инструменты > Параметры > проекты и решения > веб-проекты > используйте 64-разрядную версию IIS Express

мой коллега поставил этот флажок (он явно искал его), но имел сообщение об ошибке в вопросе. Через несколько часов он снял флажок и проверил его снова. И вот: код теперь работал с успехом.

кажется, что есть два места, где сохранено состояние этого ящика, которое стал не синхронизирован. ООН — и перепроверки он синхронизируется это снова.

вопрос для более знающих пользователей: было ли обновление или что-то на прошлой неделе (для VS 2015), которое де-синхронизировало состояния?

При сборке решения

Error    1    Невозможно загрузить файл или сборку "file:///D:/SOURCES/bin/x86/RELEASE/ELA/ELA.DocumentImaging.dll" или один из зависимых от них компонентов. Была сделана попытка загрузить программу, имеющую неверный формат. Строка 304, позиция 5.    D:/SOURCES/ELA/ELA.ClientMainForm.resx    304    5    ELA.Client

по английски это выглядит примерно так

Error 1 Could not load file or assembly 'file:///c:/users//documents/visual studio 2010/Projects/WindowsFormsApplication5/ClassLibrary1/bin/x86/Debug/ClassLibrary1.dll' or one of its dependencies. An attempt was made to load a program with an incorrect format. Line 174, position 5. c:usersdocumentsvisual studio 2010ProjectsWindowsFormsApplication5WindowsFormsApplication5Form1.resx 174 5 WindowsFormsApplication5

Нашел статейку http://blogs.msdn.com/b/visualstudio/archive/2010/06/19/resgen-exe-error-an-attempt-was-made-to-load-a-program-with-an-incorrect-format.aspx основной смысл которой сводился к тому что некий процесс (наверное имелось ввиду — процесс сборки) пытается загрузить сборку на которую у него есть ссылка с отличающейся архитектурой.

В статье предлагаются 3 способоа обойти проблему. Самый первый, собирать с AnyCPU я попробовал, применил для  всего решения. Это не помогло.

Остальные два решения

Notes on Workarounds 2 and 3:Workarounds 2 and 3 apply specifically to the scenario where a project targeting .NET 3.5 has a .resx file that references a 32-bit assembly. There is currently no workaround for targeting 4.0 and trying to reference a 32-bit assembly from 64-bit MSBuild or vice versa – aside from changing to use the MSBuild.exe of the architecture you’re targeting.Please be aware that by forcing ResGen.exe to execute as 32-bit, you are essentially introducing the opposite problem: ResGen.exe will now error if you try to load 64-bit architecture-specific reference assemblies in it.
Workaround 2:Make ResGen.exe 32-bit by:1. Cd “%ProgramFiles(x86)%Microsoft SDKsWindowsv7.0ABin”2. Corflags /32Bit+ /Force ResGen.exeHowever, since our current build process has a heuristic that assumes that ResGen.exe is MSIL, just doing the above step will cause a different error (“The specified task executable "ResGen.exe" could not be run. The handle is invalid”) unless you inform GenerateResource that ResGen.exe is now 32-bit via setting the property “ResGenToolArchitecture” to “Managed32Bit”. This can be accomplished by doing one of the following:

1. Adding <ResGenToolArchitecture>Managed32Bit</ResGenToolArchitecture> to a PropertyGroup in the project file of any project that generates resources targeting .NET 3.5 – since the corflags trick affects the bitness of ResGen.exe on a system-wide level, the property must be set for all affected projects as well.

2. OR If running MSBuild.exe directly, passing it using the global property switch: ‘/p:ResGenToolArchitecture=Managed32Bit’

3. OR Setting it as an environment variable in the command window that MSBuild.exe is run from or the VS 2010 IDE is opened from: ‘set RESGENTOOLARCHITECTURE=Managed32Bit’

Pros: Doesn’t require changing the architecture of the referenced assembly

Cons: More complicated; requires baking the workaround either into the project file, or into your build system as a whole.
Workaround 3:

Force the CLR to load all MSIL applications as 32-bit by:

1. Cd “%windir%Microsoft.NETFramework64v2.0.50727”

2. Ldr64.exe setwow

Then, since this also is a way to force ResGen.exe to execute as though it’s a 32-bit process, you must also go through the second part of Workaround 2 (setting ResGenToolArchitecture=Managed32Bit).

Pros: Doesn’t require changing the architecture of the referenced assembly

Cons: Affects how the CLR works for the entire machine. Also the same cons as Workaround 2.

я не стал пробовать, т.к. возникли некоторые сомнения. Попытался разобраться с файлом ресурсов MainForm.resx, который вызывает ошибку. Декодировал ресурс из base64 в простой текст и увидел что в самом закодированном ресурсе стоит ссылка на сборку System.Windows.Forms, Version=4.0.0.0 и это при том что в свойствах самого проекта был задан Target Framework = 2.0.

(Примечание:При декодировании base64 столкнулся с проблемой).

Копаю дальше. Нашел баг на Microsoft Connect который гораздо ближе по смыслу чем первая найденная статья. Человек подтверждает догадки

Posted by DanyR on 28.10.2010 at 0:48
The patch from Ed Hartley has the following internal effect:

I decoded an ImageStream with «j00L» and «j0yL» and found out, that in VS2010 MS is serializing ImageLists with a reference to System.Windows.Forms, Version=4.0, even when the project is set to 2.0. The tip changes exactly this («0» to «y» changes «4» to «2»).

Please, please, please fix this ASAP.

Daniel

Там же к статье приложена программка для правки файлов ресурсов Set2010ImageListsToNET2.zip которая правит ссылку в ресурсном файле на System.Windows.Forms, Version=2.0.0.0.

Короче нужно те ресурсные файлы которые вызывают ошибку при сборке обработать этой прогой — это помогает.


«Была сделана попытка загрузить программу, имеющую неверный формат», даже если платформы одинаковые

Я вызываю функции из 32-разрядной неуправляемой DLL в 64-разрядной системе. Что я получаю:

BadImageFormatException: была предпринята попытка загрузить программу с неправильным форматом. (Исключение из HRESULT: 0x8007000B)

сначала у меня были мои проекты, установленные на любую платформу CPU, поэтому я изменил их на x86, но эта ошибка все еще происходит. Это единственное решение, которое я знаю.

библиотеки DLL не повреждены или что-то еще, потому что я могу использовать их с другими программами (у меня нет источника). Я думал, что, возможно, это не было нахождение зависимости, но я проверил, и все они там. Кроме того, разве это не бросит DllNotFoundException в этом случае?

что еще я могу сделать? И прежде чем вы скажете: «вместо этого используйте 64-разрядную неуправляемую DLL», позвольте мне указать, что ее нет. ;)

15 ответов


Если вы попытаетесь запустить 32-разрядные приложения на IIS 7 (и/или 64-разрядной ОС), вы получите ту же ошибку. Итак, из IIS 7 щелкните правой кнопкой мыши пул приложений и перейдите в раздел» Дополнительные настройки «и измените» включить 32-разрядные приложения «на»TRUE».

перезагрузите ваш сайт и он должен работать.

enter image description here


Почему-то Build флажок в Configuration Manager был снят для моего исполняемого файла, поэтому он все еще работал со старой сборкой процессора. После того, как я исправил это, Visual Studio пожаловалась, что не может отладить сборку, но это было исправлено с перезапуском.


на Visual Studio, щелкните правой кнопкой мыши проект — > на левой панели нажмите кнопку Build tab,

Project properties, build tab

под Целевой Платформы выберите x86 (или, как правило,архитектура в матче с библиотекой, на которую вы ссылаетесь)

Project properties, platform target

надеюсь, это кому-то поможет! :)

60

автор: Marvin Thobejane


У меня тоже была эта проблема. Пробовал все предложения здесь, но они не помогли.

Я нашел еще одну вещь, чтобы проверить, что установил его для меня. В Visual Studio щелкните правой кнопкой мыши проект и откройте «Свойства». Перейдите на вкладку «компиляция», а затем нажмите» Дополнительные параметры компиляции » внизу.

Проверьте раскрывающийся список «целевой процессор». Он должен соответствовать» платформе», которую вы строите. То есть, если вы создаете «любой процессор», то «целевой процессор» должен сказать » любой ЦПУ.» Пройдите через все ваши платформы, сделав их активными и проверьте эту настройку.


Если вы столкнулись с этой ошибкой при нажатии зеленой кнопки со стрелкой для запуска приложения, но все еще хотите запустить приложение в 64 бит. Вы можете сделать это в VS 2013 или 2015

перейти к: Инструменты > Параметры > проекты и решения > веб-проекты > использовать 64-разрядную версию IIS Express


Если вы используете любой CPU, вы можете столкнуться с этой проблемой, если предпочитают 32-бит проверил:

убедитесь, что вы убрать эта опция в свойстве проекта Build tab!

enter image description here


немного не по теме для этого сообщения, но поиск этого сообщения об ошибке привел меня сюда.

Если вы строите через team system и получаете эту ошибку, вкладка процесс определения сборки имеет параметр «MSBuild Platform». Если установлено значение «Auto», может возникнуть эта проблема. Изменение его на » X86 » также может устранить ошибку.


в моем случае я использовал собственную DLL в C#. Эта DLL зависела от нескольких других DLL, которые отсутствовали. Как только эти другие DLL были добавлены, все сработало.


см. Также ответ, которые решали ту же проблему для меня.

опубликовано Luis Mack на 5/12/2010 в 8: 50 AM я нашел ту же проблему, только для конкретного проекта при компиляции на 64-битной машине. Исправление, которое, похоже, работает, — вручную изменять один символ в потоке изображений каждый раз, когда usercontrol или форма редактируются в конструкторе

 AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w

заменить на

 AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj0yLjAuMC4w

это 00LjAuMC4w на 0yLjAuMC4w в конце строки (00 назад к 0y)


в моем случае, я использую крошечный .exe, который перезагружает указанные библиотеки DLL через отражение. Поэтому я просто делаю эти шаги, которые спасают мой день:

из свойств проекта в обозревателе решений на вкладке сборка я выбираю целевой platfrom x86


в моем случае я запускал тесты через MSTest и узнал, что я развертываю как 32-разрядную, так и 64-разрядную DLL в тестовый каталог. Программа благоприятствовала 64-битной DLL и вызывала ее сбой.

TL; DR убедитесь, что вы развертываете только 32-разрядные библиотеки DLL для тестов.


Я решил эту проблему в «Windows». Проверив все настройки, очистив решение и восстановив его, я просто закрываю решение и снова открываю его. Тогда это сработало, поэтому VS, вероятно, не избавился от некоторых вещей во время уборки.
Когда логические решения не работают, я обычно обращаюсь к нелогичным (или кажущимся нелогичными). Окна меня не подводят. :)


Я смог исправить эту проблему, сопоставив мою версию сборки с версией .NET на сервере.

Я дважды щелкнул .exe просто посмотреть, что произойдет, и он сказал мне установить 4.5….

поэтому я понизился до 4.0, и это сработало!

поэтому убедитесь, что ваши версии совпадают. Он работал на моем dev box отлично, но сервер имел более старую версию .NET.


в моем случае это было неправильное содержимое файла. DLL была загружена из интернета, но содержимое DLL было HTML-страницей: D
Попробуйте проверить, если это двоичный файл, если это кажется правильным DLL:)


основываясь на ответе @paibamboo

Он сказал: перейдите к: Инструменты > Параметры > проекты и решения > веб-проекты > использовать 64-разрядную версию IIS Express

мой коллега установил этот флажок (он явно искал его), но имел сообщение об ошибке в вопросе. Через несколько часов он снял флажок и проверил его снова. О чудо: код теперь работал успешно.

кажется, что есть два места, где сохранено состояние этого окна, которое вышел из синхронизации. Un-и перепроверка снова синхронизировала его.

вопрос для более знающих пользователей: было ли обновление или что-то на прошлой неделе (для VS 2015), которое де-синхронизировало Штаты?


1 / 1 / 0

Регистрация: 14.06.2012

Сообщений: 353

1

22.09.2013, 12:39. Показов 48760. Ответов 3


Студворк — интернет-сервис помощи студентам

Была сделана попытка загрузить программу, имеющую неверный формат. (Исключение из HRESULT: 0x8007000B)
Что делать, если при нажатии кнопки «Визуализировать», выдает эту ошибку, на строке: Glut.glutSolidCube(32);

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
 
using Tao.OpenGl;
using Tao.FreeGlut;
using Tao.Platform.Windows;
 
namespace TaoProg
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            AnT.InitializeContexts();
        }
 
        private void Form1_Load(object sender, EventArgs e)
        {
            // инициализация Glut 
            Glut.glutInit();
            Glut.glutInitDisplayMode(Glut.GLUT_RGB | Glut.GLUT_DOUBLE | Glut.GLUT_DEPTH);
 
            // очитка окна 
            Gl.glClearColor(255, 255, 255, 1);
 
            // установка порта вывода в соотвествии с размерами элемента anT 
            Gl.glViewport(0, 0, AnT.Width, AnT.Height);
 
 
            // настройка проекции 
            Gl.glMatrixMode(Gl.GL_PROJECTION);
            Gl.glLoadIdentity();
            Glu.gluPerspective(45, (float)AnT.Width / (float)AnT.Height, 0.1, 200);
            Gl.glMatrixMode(Gl.GL_MODELVIEW);
            Gl.glLoadIdentity();
 
            // настройка параметров OpenGL для визуализации 
            Gl.glEnable(Gl.GL_DEPTH_TEST);
 
        }
 
        private void button2_Click(object sender, EventArgs e)
        {
            Application.Exit();
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            Gl.glClear(Gl.GL_COLOR_BUFFER_BIT | Gl.GL_DEPTH_BUFFER_BIT);
            Gl.glLoadIdentity();
            Gl.glColor3f(1.0f, 0,0);
 
            Gl.glPushMatrix();
            Gl.glTranslated(0, 0, -6);
            Gl.glRotated(45, 1, 1, 0);
 
            //рисуем куб с помощью библиотеки FreeGLUT
            Glut.glutSolidCube(32);
 
            Gl.glPopMatrix();
            Gl.glFlush();
            AnT.Invalidate();
 
        }
 
       
 
        
    }
}



0



Программисты, занимающиеся разработкой различного программного обеспечения в интегрированной среде разработки Microsoft Visual Studio C++, могут столкнуться с такой неприятностью, как ошибка 0x8007000B. При ее появлении перед пользователями может появиться окошко со следующим текстом:

Была сделана попытка загрузить программу, имеющую неверный формат. (Исключение из HRESULT: 0x8007000B)

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

HRESULT: 0x8007000B

Способ устранения ошибки 0x8007000B

В данной статье мы рассмотрим одну из ситуаций, при которой может возникать код ошибки 0x8007000B. Итак, давайте предположим, что вы занимаетесь разработкой приложения в Visual Studio Express, для нормальной работы которому требуется применение внешней библиотеки динамической компоновки(DLL-файл). Вы проверили свое приложение – оно работает на вашей машине.

Далее вы предприняли попытку запустить данное приложение на компьютере другого пользователя либо на своей иной машине, которая работает на 64-битной операционной системе. Однако, при запуске перед вами появилось неприятное сообщение «Была сделана попытка загрузить программу, имеющую неверный формат. (Исключение из HRESULT: 0x8007000B)».

В данной ситуации, скорее всего, вы увидели ошибку HRESULT: 0x8007000B из-за того, что внешняя динамическая библиотека, к функциям в которой выполняется обращение, была скомпилирована, чтобы работать под 32-битными операционными системами. Если во время компиляции вы не не укажете целевую платформу, то приложение будет нацелено на работу под 32-битной либо под 64-битную операционной системой. Соответственно, 64-битное приложение сможет работать только с 64-битными DLL.

Чтобы избавиться от ошибки 0x8007000B, вам нужно вернуться в настройки проекта, после чего поменять целевую платформу на «x86». Вероятно, ранее у вас там была выбрана настройка «Любой ЦП», что и привело к компиляции x64 приложения. Как только вы перекомпилируете приложение, оно спокойно сможет работать на любом ПК в 32-битном режиме, а также у него появится возможность производить обращения к нужной вам 32-битной динамической библиотеке. После этого ошибка к кодом 0x8007000B будет устранена.

I’m calling functions from a 32-bit unmanaged DLL on a 64-bit system. What I get is:

BadImageFormatException: An attempt was made to load a program with an incorrect format. (Exception from HRESULT: 0x8007000B)

At first, I had my projects set to the Any CPU platform, so I changed them both to x86, but this error is still occurring. That’s really the only fix I know for this.

The DLLs aren’t corrupt or anything, because I can use them with other programs (that I don’t have the source to). I thought that perhaps it wasn’t finding a dependency, but I checked and they’re all there. Plus, wouldn’t it throw a DllNotFoundException in that case?

What else can I do? And before you say «Use a 64-bit unmanaged DLL instead,» let me point out that there isn’t one. ;)

asked Jan 7, 2010 at 21:21

David Brown's user avatar

David BrownDavid Brown

35.3k11 gold badges83 silver badges131 bronze badges

4

If you try to run 32-bit applications on IIS 7 (and/or 64-bit OS machine), you will get the same error. So, from the IIS 7, right click on the applications’ application pool and go to «advanced settings» and change «Enable 32-Bit Applications» to «TRUE».

Restart your website and it should work.

enter image description here

viggity's user avatar

viggity

15k7 gold badges88 silver badges95 bronze badges

answered Jan 6, 2011 at 20:08

bluwater2001's user avatar

bluwater2001bluwater2001

7,8195 gold badges24 silver badges21 bronze badges

6

Somehow, the Build checkbox in the Configuration Manager had been unchecked for my executable, so it was still running with the old Any CPU build. After I fixed that, Visual Studio complained that it couldn’t debug the assembly, but that was fixed with a restart.

answered Jan 8, 2010 at 1:59

David Brown's user avatar

David BrownDavid Brown

35.3k11 gold badges83 silver badges131 bronze badges

4

In Visual Studio, Right Click your project -> On the left pane click the Build tab,

Project properties, build tab

under Platform Target select x86 (or more generally the architecture to match with the library you are linking to)

Project properties, platform target

starball's user avatar

starball

16.1k6 gold badges31 silver badges150 bronze badges

answered Oct 21, 2013 at 7:35

Marvin Thobejane's user avatar

Marvin ThobejaneMarvin Thobejane

1,9901 gold badge18 silver badges13 bronze badges

5

If you encounter this error when you click green arrow button to run the application, but still want to run the app in 64 bit. You can do this in VS 2013, 2015, 2017, and 2019

Go to: Tools > Options > Projects and Solutions > Web Projects > Use the 64 bit version of IIS Express

Or you can do it per project at Project Properties > Web > Bitness
IIS Express Bitness

Adam Nofsinger's user avatar

answered Jul 5, 2016 at 13:46

paibamboo's user avatar

paibamboopaibamboo

2,79417 silver badges16 bronze badges

7

I just had this problem also. Tried all the suggestions here, but they didn’t help.

I found another thing to check that fixed it for me. In Visual Studio, right-click on the project and open «Properties». Click on the «Compile» (or «Build») tab and then click on «Advanced Compile Options» at the bottom.

Check the dropdown «Target CPU». It should match the «Platform» you are building. That is, if you are building «Any CPU» then «Target CPU» should say «Any CPU». Go through all of your Platforms by making them active and check this setting.

frido's user avatar

frido

12.8k5 gold badges39 silver badges54 bronze badges

answered Dec 12, 2011 at 19:13

Denis's user avatar

DenisDenis

11.7k15 gold badges87 silver badges150 bronze badges

3

If you are using Any CPU, you might encounter this issue if the Prefer 32-bit option is checked:

Make sure you uncheck this option in the project’s property’s Build tab!

enter image description here

Denis's user avatar

Denis

11.7k15 gold badges87 silver badges150 bronze badges

answered Sep 24, 2013 at 13:55

Drew Noakes's user avatar

Drew NoakesDrew Noakes

299k165 gold badges677 silver badges740 bronze badges

5

In my case I was using a native DLL in C#. This DLL depended on couple of other DLLs that were missing. Once those other DLLs were added everything worked.

answered Dec 11, 2012 at 20:30

Tomasz Stypich's user avatar

1

  1. Go to: Tools → Options → Projects and Solutions → Web Projects → Use the 64 bit version of IIS Express.
  2. Change below setting for web service project:

enter image description here

Timothy G.'s user avatar

Timothy G.

5,9496 gold badges29 silver badges45 bronze badges

answered Apr 30, 2020 at 6:33

Mani's user avatar

ManiMani

3372 silver badges10 bronze badges

1

A bit off topic for this post, but searching for this error message brought me here.

If you are building through team system and getting this error, the build definition process tab has a «MSBuild Platform» setting. If this is set to «Auto», you may experience this problem. Changing it to «X86» can also resolve the error.

answered Oct 5, 2012 at 13:55

StingyJack's user avatar

StingyJackStingyJack

19k10 gold badges63 silver badges120 bronze badges

1

We had a similar issue and we managed to fix it by setting the Platform target to x86. Project Properties-> build

answered Aug 19, 2019 at 2:34

Joe's user avatar

JoeJoe

3392 silver badges3 bronze badges

2

With Visual Studio 2019 I had a similar issue when I wanted to run tests (MSTest directly from VS). In my case I only had an x64 native DLL and I received this error message. First, I thought it is because Visual Studio runs as x86 but this page helped me to solve the issue:

Run unit test as a 64-bit process

It says

  1. Set your projects to Any CPU
  2. Explicitly define processor architecture

I did both (I explicitly set x64) and then my tests started to work.

Set processor architecture explicitly to x64

answered Aug 29, 2020 at 9:04

luviktor's user avatar

luviktorluviktor

2,2402 gold badges22 silver badges23 bronze badges

1

In my case it was wrong content of the file. DLL was downloaded from the web, but content of the DLL was HTML page :D
Try to check if it is binary file, if it seems like correct DLL :)

answered Jun 22, 2016 at 7:42

Ludwo's user avatar

LudwoLudwo

6,0134 gold badges32 silver badges48 bronze badges

1

Building on the answer of @paibamboo

He said: Go to: Tools > Options > Projects and Solutions > Web Projects > Use the 64 bit version of IIS Express

My coworker had this box checked (he explicitly looked for it), but had the error message in question. After some hours he unchecked the box and checked it again. Lo and behold: The code now ran with success.

It seems, that there are two places where the state of this box ist saved which became out of sync. Un- and rechecking it synced it again.

Question for more knowledgable users: Was there an update or something last week (for VS 2015) which de-synced the states?

answered Oct 16, 2017 at 14:42

MilConDoin's user avatar

MilConDoinMilConDoin

7246 silver badges24 bronze badges

Also see this answer, which solved the same problem for me.

Posted by Luis Mack on 5/12/2010 at 8:50 AM I’ve found the same problem, only for a specific project when compiling on a 64-bit machine. A fix that SEEMS to work is to manually alter one character in the image stream EVERY TIME the usercontrol or form is edited in the designer

 AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w

Change to

 AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj0yLjAuMC4w

That is 00LjAuMC4w back to 0yLjAuMC4w at the end of the line (00 back to 0y)

Community's user avatar

answered Mar 21, 2012 at 13:45

Shaul Behr's user avatar

Shaul BehrShaul Behr

36.7k69 gold badges248 silver badges383 bronze badges

0

In my case, I am using a tiny .exe that reloads the referenced DLLs via Reflection. So I just do these steps which saves my day:

From project properties on solution explorer, at build tab, I choose target platfrom x86

answered Feb 15, 2012 at 9:21

asdf_enel_hak's user avatar

asdf_enel_hakasdf_enel_hak

7,4645 gold badges42 silver badges84 bronze badges

In my case, I was running tests through MSTest and found out that I was deploying both a 32-bit and 64-bit DLL to the test directory. The program was favoring the 64-bit DLL and causing it to fail.

TL;DR Make sure you only deploy 32-bit DLLs to tests.

answered May 7, 2015 at 19:30

Mike Cluck's user avatar

Mike CluckMike Cluck

31.7k13 gold badges79 silver badges91 bronze badges

If you are importing unmanaged DLL then use

CallingConvention = CallingConvention.Cdecl 

in your DLL import method.

answered Oct 10, 2019 at 10:31

Ramkumar Shanmugam's user avatar

I got this issue solved in the ‘Windows’ way. After checking all my settings, cleaning the solution and rebuilding it, I simply close the solution and reopened it. Then it worked, so VS probably didn’t get rid of some stuff during cleaning.
When logical solutions don’t work, I usually turn to illogical (or seemingly illogical) ones. Windows doesn’t let me down. :)

answered Apr 30, 2013 at 9:38

user1771386's user avatar

I was able to fix this issue by matching my build version to the .NET version on the server.

I double clicked the .exe just to see what would happen and it told me to install 4.5….

So I downgraded to 4.0 and it worked!

So make sure your versions match. It ran on my dev box fine, but server had older .NET version.

answered Dec 16, 2015 at 21:58

Nateous's user avatar

NateousNateous

7579 silver badges23 bronze badges

We were having the same issue in .NET core. The solution was to download 32-bit .netcore runtime, and having your project target x86

In your csproj file add

  <PropertyGroup>
    <PlatformTarget>x86</PlatformTarget>  
  </PropertyGroup>

  <PropertyGroup>
    <RunCommand Condition="'$(PlatformTarget)' == 'x86'">$(MSBuildProgramFiles32)dotnetdotnet</RunCommand>    
  </PropertyGroup>

This was used for a Windows machine, you’d have to adjust paths and such for Linux/OSX

answered Jun 27, 2019 at 20:28

Samir Banjanovic's user avatar

In my case, I didn’t have the correct project set as the start-up project. I went to solution settings and selected the correct startup project and it worked

answered Mar 31, 2021 at 23:48

Conner's user avatar

ConnerConner

3524 silver badges10 bronze badges

In my case this same error happened after publishing. I had published before with another platform configuration.

The solution was to cleanup the publish folder first, then it worked.

(alternatively set the «delete existing files» option to true)

answered Jun 29, 2021 at 8:17

Allie's user avatar

AllieAllie

1,0421 gold badge13 silver badges16 bronze badges

Another reason that may cause this exception, is the C++ Redistributables missing for the target platform of your Dll. I had a tough time finding out when testing on a VM.

answered Dec 1, 2021 at 13:24

crankedrelic's user avatar

crankedreliccrankedrelic

4631 gold badge5 silver badges14 bronze badges

Please also note that the version of used dll file(s) (in my case «WebView2Loader.dll») which is in use is very crucial. I had almost the same problem with «Microsoft.WebView2.FixedVersionRuntime.101.0.1210.39.x64» when I tried to use the WebView2 component in the MMC Snap-Ins with types of «HTMLView» or «FormView».

I just copied the referenced dll file in a proper path that was accessible for the project (you could just put it beside your project output files first to test it) and then WebView2 browser started to function as expected. Microsoft error messages sometimes (at least in my case) was a little bit misleading and did not convey enough and to the point information.

I received «BadImageFormatException» that normally occurs when you mix platform targets (for example using a dll file compiled in X64 in an application that targeted for x86 or vice versa) or mix native code and .NET but that was not my problem at all. I hope this help one who may stuck in.

answered May 18, 2022 at 8:06

amirfg's user avatar

amirfgamirfg

2721 gold badge6 silver badges21 bronze badges

I also had this issue when I want to call a native DLL from C#/WPA. The below steps work for my project. Properities->Build->Platform target x64/x86(change this option, then works).

lee-m's user avatar

lee-m

2,27317 silver badges29 bronze badges

answered Jul 31, 2022 at 14:04

GuangJun Liu's user avatar

Подробная информация об использовании оперативной
(JIT) отладки вместо данного диалогового
окна содержится в конце этого сообщения.

************** Текст исключения **************
System.BadImageFormatException: Была сделана попытка загрузить программу, имеющую неверный формат. (Исключение из HRESULT: 0x8007000B)
в RE.Form44.DLL(Int32& HCEC, Int32& GEOMETRIA__RE, Int32& TUBI__RE, Int32& PASSO__RE, Double& PASSO_LIBERO__RE, Int32& ALETTE__RE, Int32& ALETTE_Xoption__RE, Int32& FLUIDO__RE, Double& FLUIDO_bis__RE, Int32& COLLETTORE__RE, Int32& COLLETTORE_dd__RE, Int32& CIRCUITI__RE, Double& TUBI_SALTATI__RE, Int32& null15, Double& MAX_dp1_UNO__RE, Double& ALTEZZA_slm__RE, Double& FATTORE_SPORCAMENTO__RE, Double& FATTORE_SICUREZZA__RE, Double& PORTATA2, Double& VELOCITA2, Double& T2IN, Double& UMIDITA2IN, Double& T2OUT, Double& T1IN, Double& T1OUT, Double& PORTATA1, Double& POTENZA, Double& LUNGHEZZA, Double& ALTEZZA, Double& RANGHI, Double& CIRCUITI, Int32& COLLETTORE_LT3, Double& _PORTATA2, Double& _VELOCITA2, Double& _T2IN, Double& _UMIDITA2IN, Double& _T2OUT, Double& _UMIDITA2OUT, Double& _CADUTA_PRESS2, Double& _SHF, Double& _CONT_H2O, Double& _T1IN, Double& _T1OUT, Double& _PORTATA1, Double& _VELOCITA1, Double& _CADUTA_PRESS1, Double& _RESA_NOM, Double& _RESA_MAX, Double& _LUNGHEZZA, Double& _ALTEZZA, Double& _RANGHI, Double& _CIRCUITI, Double& _SUPERFICIE1, Double& _SUPERFICIE2, Double& _VOLUME, Double& _PESO, Double& _PRESSIONE_ATM, Double& _CADUTA_PRESS1_COL, Double& _PORTATA2_kg_s, Double& _PORTATA1_kg_s, Double& _CONT_H2O_IN, Double& _CONT_H2O_OUT, Double& _TITOLO1, String& CODE, String& FLUIDO, Double& PRESSIONE1_Tec, Double& AUX_1, String& AUX_2, Double& AUX_3, String& AUX_4, Double& AUX_5, Double& AUX_6, Double& AUX_7, Double& AUX_8)
в RE.Form1.Load_Set__FILE()
в RE.Form1.Form1_Load(Object sender, EventArgs e)
в System.Windows.Forms.Form.OnLoad(EventArgs e)
в System.Windows.Forms.Control.CreateControl(Boolean fIgnoreVisible)
в System.Windows.Forms.Control.CreateControl()
в System.Windows.Forms.Control.WmShowWindow(Message& m)
в System.Windows.Forms.Control.WndProc(Message& m)
в System.Windows.Forms.Control.ControlNativeWindow.W ndProc(Message& m)
в System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)

************** Загруженные сборки **************
mscorlib
Версия сборки: 2.0.0.0
Версия Win32: 2.0.50727.5420 (Win7SP1.050727-5400)
CodeBase: file:///C:/Windows/Microsoft.NET/Framework64/v2.0.50727/mscorlib.dll
—————————————-
REcalc
Версия сборки: 1.0.3727.5274
Версия Win32: 1.0.3727.5274
CodeBase: file:///C:/Program%20Files%20(x86)/Roen%20Est%20S.p.A/REcalc/REcalc.exe
—————————————-
System.Windows.Forms
Версия сборки: 2.0.0.0
Версия Win32: 2.0.50727.5420 (Win7SP1.050727-5400)
CodeBase: file:///C:/Windows/assembly/GAC_MSIL/System.Windows.Forms/2.0.0.0__b77a5c561934e089/System.Windows.Forms.dll
—————————————-
System
Версия сборки: 2.0.0.0
Версия Win32: 2.0.50727.5420 (Win7SP1.050727-5400)
CodeBase: file:///C:/Windows/assembly/GAC_MSIL/System/2.0.0.0__b77a5c561934e089/System.dll
—————————————-
System.Drawing
Версия сборки: 2.0.0.0
Версия Win32: 2.0.50727.5420 (Win7SP1.050727-5400)
CodeBase: file:///C:/Windows/assembly/GAC_MSIL/System.Drawing/2.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll
—————————————-
Microsoft.VisualBasic
Версия сборки: 8.0.0.0
Версия Win32: 8.0.50727.5420 (Win7SP1.050727-5400)
CodeBase: file:///C:/Windows/assembly/GAC_MSIL/Microsoft.VisualBasic/8.0.0.0__b03f5f7f11d50a3a/Microsoft.VisualBasic.dll
—————————————-
CommonFunctions
Версия сборки: 1.0.0.0
Версия Win32: 1.0.0.0
CodeBase: file:///C:/Program%20Files%20(x86)/Roen%20Est%20S.p.A/REcalc/CommonFunctions.DLL
—————————————-
mscorlib.resources
Версия сборки: 2.0.0.0
Версия Win32: 2.0.50727.5420 (Win7SP1.050727-5400)
CodeBase: file:///C:/Windows/Microsoft.NET/Framework64/v2.0.50727/mscorlib.dll
—————————————-
System.Windows.Forms.resources
Версия сборки: 2.0.0.0
Версия Win32: 2.0.50727.4927 (NetFXspW7.050727-4900)
CodeBase: file:///C:/Windows/assembly/GAC_MSIL/System.Windows.Forms.resources/2.0.0.0_ru_b77a5c561934e089/System.Windows.Forms.resources.dll
—————————————-

************** Оперативная отладка (JIT) **************
Для подключения оперативной (JIT) отладки файл .config данного
приложения или компьютера (machine.config) должен иметь
значение jitDebugging, установленное в секции system.windows.forms.
Приложение также должно быть скомпилировано с включенной
отладкой.

Например:

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

При включенной отладке JIT любое необрабатываемое исключение
пересылается отладчику JIT, зарегистрированному на данном компьютере,
вместо того чтобы обрабатываться данным диалоговым окном.

Программисты, занимающиеся разработкой различного программного обеспечения в интегрированной среде разработки Microsoft Visual Studio C++, могут столкнуться с такой неприятностью, как ошибка 0x8007000B. При ее появлении перед пользователями может появиться окошко со следующим текстом:

Была сделана попытка загрузить программу, имеющую неверный формат. (Исключение из HRESULT: 0x8007000B)

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

HRESULT: 0x8007000B

Способ устранения ошибки 0x8007000B

В данной статье мы рассмотрим одну из ситуаций, при которой может возникать код ошибки 0x8007000B. Итак, давайте предположим, что вы занимаетесь разработкой приложения в Visual Studio Express, для нормальной работы которому требуется применение внешней библиотеки динамической компоновки(DLL-файл). Вы проверили свое приложение – оно работает на вашей машине.

Далее вы предприняли попытку запустить данное приложение на компьютере другого пользователя либо на своей иной машине, которая работает на 64-битной операционной системе. Однако, при запуске перед вами появилось неприятное сообщение «Была сделана попытка загрузить программу, имеющую неверный формат. (Исключение из HRESULT: 0x8007000B)».

В данной ситуации, скорее всего, вы увидели ошибку HRESULT: 0x8007000B из-за того, что внешняя динамическая библиотека, к функциям в которой выполняется обращение, была скомпилирована, чтобы работать под 32-битными операционными системами. Если во время компиляции вы не не укажете целевую платформу, то приложение будет нацелено на работу под 32-битной либо под 64-битную операционной системой. Соответственно, 64-битное приложение сможет работать только с 64-битными DLL.

Чтобы избавиться от ошибки 0x8007000B, вам нужно вернуться в настройки проекта, после чего поменять целевую платформу на «x86». Вероятно, ранее у вас там была выбрана настройка «Любой ЦП», что и привело к компиляции x64 приложения. Как только вы перекомпилируете приложение, оно спокойно сможет работать на любом ПК в 32-битном режиме, а также у него появится возможность производить обращения к нужной вам 32-битной динамической библиотеке. После этого ошибка к кодом 0x8007000B будет устранена.

I’m calling functions from a 32-bit unmanaged DLL on a 64-bit system. What I get is:

BadImageFormatException: An attempt was made to load a program with an incorrect format. (Exception from HRESULT: 0x8007000B)

At first, I had my projects set to the Any CPU platform, so I changed them both to x86, but this error is still occurring. That’s really the only fix I know for this.

The DLLs aren’t corrupt or anything, because I can use them with other programs (that I don’t have the source to). I thought that perhaps it wasn’t finding a dependency, but I checked and they’re all there. Plus, wouldn’t it throw a DllNotFoundException in that case?

What else can I do? And before you say «Use a 64-bit unmanaged DLL instead,» let me point out that there isn’t one.

asked Jan 7, 2010 at 21:21

David Brown's user avatar

David BrownDavid Brown

35.1k11 gold badges84 silver badges129 bronze badges

4

If you try to run 32-bit applications on IIS 7 (and/or 64-bit OS machine), you will get the same error. So, from the IIS 7, right click on the applications’ application pool and go to «advanced settings» and change «Enable 32-Bit Applications» to «TRUE».

Restart your website and it should work.

enter image description here

viggity's user avatar

viggity

14.9k7 gold badges86 silver badges94 bronze badges

answered Jan 6, 2011 at 20:08

bluwater2001's user avatar

bluwater2001bluwater2001

7,7895 gold badges24 silver badges21 bronze badges

7

Somehow, the Build checkbox in the Configuration Manager had been unchecked for my executable, so it was still running with the old Any CPU build. After I fixed that, Visual Studio complained that it couldn’t debug the assembly, but that was fixed with a restart.

answered Jan 8, 2010 at 1:59

David Brown's user avatar

David BrownDavid Brown

35.1k11 gold badges84 silver badges129 bronze badges

4

In Visual Studio, Right Click your project -> On the left pane click the Build tab,

Project properties, build tab

under Platform Target select x86 (or more generally the architecture to match with the library you are linking to)

Project properties, platform target

user's user avatar

user

3,9365 gold badges17 silver badges34 bronze badges

answered Oct 21, 2013 at 7:35

Marvin Thobejane's user avatar

Marvin ThobejaneMarvin Thobejane

1,9801 gold badge18 silver badges13 bronze badges

5

If you encounter this error when you click green arrow button to run the application, but still want to run the app in 64 bit. You can do this in VS 2013, 2015, 2017, and 2019

Go to: Tools > Options > Projects and Solutions > Web Projects > Use the 64 bit version of IIS Express

Or you can do it per project at Project Properties > Web > Bitness
IIS Express Bitness

Adam Nofsinger's user avatar

answered Jul 5, 2016 at 13:46

paibamboo's user avatar

paibamboopaibamboo

2,75417 silver badges16 bronze badges

7

I just had this problem also. Tried all the suggestions here, but they didn’t help.

I found another thing to check that fixed it for me. In Visual Studio, right-click on the project and open «Properties». Click on the «Compile» (or «Build») tab and then click on «Advanced Compile Options» at the bottom.

Check the dropdown «Target CPU». It should match the «Platform» you are building. That is, if you are building «Any CPU» then «Target CPU» should say «Any CPU». Go through all of your Platforms by making them active and check this setting.

frido's user avatar

frido

12.2k5 gold badges36 silver badges54 bronze badges

answered Dec 12, 2011 at 19:13

Denis's user avatar

DenisDenis

11.7k15 gold badges84 silver badges149 bronze badges

3

If you are using Any CPU, you might encounter this issue if the Prefer 32-bit option is checked:

Make sure you uncheck this option in the project’s property’s Build tab!

enter image description here

Denis's user avatar

Denis

11.7k15 gold badges84 silver badges149 bronze badges

answered Sep 24, 2013 at 13:55

Drew Noakes's user avatar

Drew NoakesDrew Noakes

294k162 gold badges669 silver badges736 bronze badges

5

In my case I was using a native DLL in C#. This DLL depended on couple of other DLLs that were missing. Once those other DLLs were added everything worked.

answered Dec 11, 2012 at 20:30

Tomasz Stypich's user avatar

1

  1. Go to: Tools → Options → Projects and Solutions → Web Projects → Use the 64 bit version of IIS Express.
  2. Change below setting for web service project:

enter image description here

Timothy G.'s user avatar

Timothy G.

5,0596 gold badges29 silver badges43 bronze badges

answered Apr 30, 2020 at 6:33

Mani's user avatar

ManiMani

3272 silver badges10 bronze badges

1

A bit off topic for this post, but searching for this error message brought me here.

If you are building through team system and getting this error, the build definition process tab has a «MSBuild Platform» setting. If this is set to «Auto», you may experience this problem. Changing it to «X86» can also resolve the error.

answered Oct 5, 2012 at 13:55

StingyJack's user avatar

StingyJackStingyJack

18.8k9 gold badges62 silver badges120 bronze badges

1

We had a similar issue and we managed to fix it by setting the Platform target to x86. Project Properties-> build

answered Aug 19, 2019 at 2:34

Joe's user avatar

JoeJoe

3392 silver badges3 bronze badges

2

With Visual Studio 2019 I had a similar issue when I wanted to run tests (MSTest directly from VS). In my case I only had an x64 native DLL and I received this error message. First, I thought it is because Visual Studio runs as x86 but this page helped me to solve the issue:

Run unit test as a 64-bit process

It says

  1. Set your projects to Any CPU
  2. Explicitly define processor architecture

I did both (I explicitly set x64) and then my tests started to work.

Set processor architecture explicitly to x64

answered Aug 29, 2020 at 9:04

luviktor's user avatar

luviktorluviktor

2,2202 gold badges22 silver badges23 bronze badges

1

Building on the answer of @paibamboo

He said: Go to: Tools > Options > Projects and Solutions > Web Projects > Use the 64 bit version of IIS Express

My coworker had this box checked (he explicitly looked for it), but had the error message in question. After some hours he unchecked the box and checked it again. Lo and behold: The code now ran with success.

It seems, that there are two places where the state of this box ist saved which became out of sync. Un- and rechecking it synced it again.

Question for more knowledgable users: Was there an update or something last week (for VS 2015) which de-synced the states?

answered Oct 16, 2017 at 14:42

MilConDoin's user avatar

MilConDoinMilConDoin

7146 silver badges24 bronze badges

Also see this answer, which solved the same problem for me.

Posted by Luis Mack on 5/12/2010 at 8:50 AM I’ve found the same problem, only for a specific project when compiling on a 64-bit machine. A fix that SEEMS to work is to manually alter one character in the image stream EVERY TIME the usercontrol or form is edited in the designer

 AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w

Change to

 AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj0yLjAuMC4w

That is 00LjAuMC4w back to 0yLjAuMC4w at the end of the line (00 back to 0y)

Community's user avatar

answered Mar 21, 2012 at 13:45

Shaul Behr's user avatar

Shaul BehrShaul Behr

36.1k69 gold badges248 silver badges381 bronze badges

0

In my case it was wrong content of the file. DLL was downloaded from the web, but content of the DLL was HTML page
Try to check if it is binary file, if it seems like correct DLL

answered Jun 22, 2016 at 7:42

Ludwo's user avatar

LudwoLudwo

5,9434 gold badges32 silver badges48 bronze badges

In my case, I am using a tiny .exe that reloads the referenced DLLs via Reflection. So I just do these steps which saves my day:

From project properties on solution explorer, at build tab, I choose target platfrom x86

answered Feb 15, 2012 at 9:21

asdf_enel_hak's user avatar

asdf_enel_hakasdf_enel_hak

7,3815 gold badges42 silver badges83 bronze badges

In my case, I was running tests through MSTest and found out that I was deploying both a 32-bit and 64-bit DLL to the test directory. The program was favoring the 64-bit DLL and causing it to fail.

TL;DR Make sure you only deploy 32-bit DLLs to tests.

answered May 7, 2015 at 19:30

Mike Cluck's user avatar

Mike CluckMike Cluck

31.4k13 gold badges79 silver badges90 bronze badges

If you are importing unmanaged DLL then use

CallingConvention = CallingConvention.Cdecl 

in your DLL import method.

answered Oct 10, 2019 at 10:31

Ramkumar Shanmugam's user avatar

I got this issue solved in the ‘Windows’ way. After checking all my settings, cleaning the solution and rebuilding it, I simply close the solution and reopened it. Then it worked, so VS probably didn’t get rid of some stuff during cleaning.
When logical solutions don’t work, I usually turn to illogical (or seemingly illogical) ones. Windows doesn’t let me down.

answered Apr 30, 2013 at 9:38

user1771386's user avatar

I was able to fix this issue by matching my build version to the .NET version on the server.

I double clicked the .exe just to see what would happen and it told me to install 4.5….

So I downgraded to 4.0 and it worked!

So make sure your versions match. It ran on my dev box fine, but server had older .NET version.

answered Dec 16, 2015 at 21:58

Nateous's user avatar

NateousNateous

7579 silver badges22 bronze badges

We were having the same issue in .NET core. The solution was to download 32-bit .netcore runtime, and having your project target x86

In your csproj file add

  <PropertyGroup>
    <PlatformTarget>x86</PlatformTarget>  
  </PropertyGroup>

  <PropertyGroup>
    <RunCommand Condition="'$(PlatformTarget)' == 'x86'">$(MSBuildProgramFiles32)dotnetdotnet</RunCommand>    
  </PropertyGroup>

This was used for a Windows machine, you’d have to adjust paths and such for Linux/OSX

answered Jun 27, 2019 at 20:28

Samir Banjanovic's user avatar

In my case, I didn’t have the correct project set as the start-up project. I went to solution settings and selected the correct startup project and it worked

answered Mar 31, 2021 at 23:48

Conner's user avatar

ConnerConner

3223 silver badges10 bronze badges

In my case this same error happened after publishing. I had published before with another platform configuration.

The solution was to cleanup the publish folder first, then it worked.

(alternatively set the «delete existing files» option to true)

answered Jun 29, 2021 at 8:17

Allie's user avatar

AllieAllie

9221 gold badge9 silver badges16 bronze badges

Another reason that may cause this exception, is the C++ Redistributables missing for the target platform of your Dll. I had a tough time finding out when testing on a VM.

answered Dec 1, 2021 at 13:24

crankedrelic's user avatar

crankedreliccrankedrelic

4331 gold badge6 silver badges14 bronze badges

Please also note that the version of used dll file(s) (in my case «WebView2Loader.dll») which is in use is very crucial. I had almost the same problem with «Microsoft.WebView2.FixedVersionRuntime.101.0.1210.39.x64» when I tried to use the WebView2 component in the MMC Snap-Ins with types of «HTMLView» or «FormView».

I just copied the referenced dll file in a proper path that was accessible for the project (you could just put it beside your project output files first to test it) and then WebView2 browser started to function as expected. Microsoft error messages sometimes (at least in my case) was a little bit misleading and did not convey enough and to the point information.

I received «BadImageFormatException» that normally occurs when you mix platform targets (for example using a dll file compiled in X64 in an application that targeted for x86 or vice versa) or mix native code and .NET but that was not my problem at all. I hope this help one who may stuck in.

answered May 18, 2022 at 8:06

amirfg's user avatar

amirfgamirfg

2521 gold badge6 silver badges21 bronze badges

I also had this issue when I want to call a native DLL from C#/WPA. The below steps work for my project. Properities->Build->Platform target x64/x86(change this option, then works).

lee-m's user avatar

lee-m

2,22817 silver badges29 bronze badges

answered Jul 31, 2022 at 14:04

GuangJun Liu's user avatar

I’m calling functions from a 32-bit unmanaged DLL on a 64-bit system. What I get is:

BadImageFormatException: An attempt was made to load a program with an incorrect format. (Exception from HRESULT: 0x8007000B)

At first, I had my projects set to the Any CPU platform, so I changed them both to x86, but this error is still occurring. That’s really the only fix I know for this.

The DLLs aren’t corrupt or anything, because I can use them with other programs (that I don’t have the source to). I thought that perhaps it wasn’t finding a dependency, but I checked and they’re all there. Plus, wouldn’t it throw a DllNotFoundException in that case?

What else can I do? And before you say «Use a 64-bit unmanaged DLL instead,» let me point out that there isn’t one.

asked Jan 7, 2010 at 21:21

David Brown's user avatar

David BrownDavid Brown

35.1k11 gold badges84 silver badges129 bronze badges

4

If you try to run 32-bit applications on IIS 7 (and/or 64-bit OS machine), you will get the same error. So, from the IIS 7, right click on the applications’ application pool and go to «advanced settings» and change «Enable 32-Bit Applications» to «TRUE».

Restart your website and it should work.

enter image description here

viggity's user avatar

viggity

14.9k7 gold badges86 silver badges94 bronze badges

answered Jan 6, 2011 at 20:08

bluwater2001's user avatar

bluwater2001bluwater2001

7,7895 gold badges24 silver badges21 bronze badges

7

Somehow, the Build checkbox in the Configuration Manager had been unchecked for my executable, so it was still running with the old Any CPU build. After I fixed that, Visual Studio complained that it couldn’t debug the assembly, but that was fixed with a restart.

answered Jan 8, 2010 at 1:59

David Brown's user avatar

David BrownDavid Brown

35.1k11 gold badges84 silver badges129 bronze badges

4

In Visual Studio, Right Click your project -> On the left pane click the Build tab,

Project properties, build tab

under Platform Target select x86 (or more generally the architecture to match with the library you are linking to)

Project properties, platform target

user's user avatar

user

3,9365 gold badges17 silver badges34 bronze badges

answered Oct 21, 2013 at 7:35

Marvin Thobejane's user avatar

Marvin ThobejaneMarvin Thobejane

1,9801 gold badge18 silver badges13 bronze badges

5

If you encounter this error when you click green arrow button to run the application, but still want to run the app in 64 bit. You can do this in VS 2013, 2015, 2017, and 2019

Go to: Tools > Options > Projects and Solutions > Web Projects > Use the 64 bit version of IIS Express

Or you can do it per project at Project Properties > Web > Bitness
IIS Express Bitness

Adam Nofsinger's user avatar

answered Jul 5, 2016 at 13:46

paibamboo's user avatar

paibamboopaibamboo

2,75417 silver badges16 bronze badges

7

I just had this problem also. Tried all the suggestions here, but they didn’t help.

I found another thing to check that fixed it for me. In Visual Studio, right-click on the project and open «Properties». Click on the «Compile» (or «Build») tab and then click on «Advanced Compile Options» at the bottom.

Check the dropdown «Target CPU». It should match the «Platform» you are building. That is, if you are building «Any CPU» then «Target CPU» should say «Any CPU». Go through all of your Platforms by making them active and check this setting.

frido's user avatar

frido

12.2k5 gold badges36 silver badges54 bronze badges

answered Dec 12, 2011 at 19:13

Denis's user avatar

DenisDenis

11.7k15 gold badges84 silver badges149 bronze badges

3

If you are using Any CPU, you might encounter this issue if the Prefer 32-bit option is checked:

Make sure you uncheck this option in the project’s property’s Build tab!

enter image description here

Denis's user avatar

Denis

11.7k15 gold badges84 silver badges149 bronze badges

answered Sep 24, 2013 at 13:55

Drew Noakes's user avatar

Drew NoakesDrew Noakes

294k162 gold badges669 silver badges736 bronze badges

5

In my case I was using a native DLL in C#. This DLL depended on couple of other DLLs that were missing. Once those other DLLs were added everything worked.

answered Dec 11, 2012 at 20:30

Tomasz Stypich's user avatar

1

  1. Go to: Tools → Options → Projects and Solutions → Web Projects → Use the 64 bit version of IIS Express.
  2. Change below setting for web service project:

enter image description here

Timothy G.'s user avatar

Timothy G.

5,0596 gold badges29 silver badges43 bronze badges

answered Apr 30, 2020 at 6:33

Mani's user avatar

ManiMani

3272 silver badges10 bronze badges

1

A bit off topic for this post, but searching for this error message brought me here.

If you are building through team system and getting this error, the build definition process tab has a «MSBuild Platform» setting. If this is set to «Auto», you may experience this problem. Changing it to «X86» can also resolve the error.

answered Oct 5, 2012 at 13:55

StingyJack's user avatar

StingyJackStingyJack

18.8k9 gold badges62 silver badges120 bronze badges

1

We had a similar issue and we managed to fix it by setting the Platform target to x86. Project Properties-> build

answered Aug 19, 2019 at 2:34

Joe's user avatar

JoeJoe

3392 silver badges3 bronze badges

2

With Visual Studio 2019 I had a similar issue when I wanted to run tests (MSTest directly from VS). In my case I only had an x64 native DLL and I received this error message. First, I thought it is because Visual Studio runs as x86 but this page helped me to solve the issue:

Run unit test as a 64-bit process

It says

  1. Set your projects to Any CPU
  2. Explicitly define processor architecture

I did both (I explicitly set x64) and then my tests started to work.

Set processor architecture explicitly to x64

answered Aug 29, 2020 at 9:04

luviktor's user avatar

luviktorluviktor

2,2202 gold badges22 silver badges23 bronze badges

1

Building on the answer of @paibamboo

He said: Go to: Tools > Options > Projects and Solutions > Web Projects > Use the 64 bit version of IIS Express

My coworker had this box checked (he explicitly looked for it), but had the error message in question. After some hours he unchecked the box and checked it again. Lo and behold: The code now ran with success.

It seems, that there are two places where the state of this box ist saved which became out of sync. Un- and rechecking it synced it again.

Question for more knowledgable users: Was there an update or something last week (for VS 2015) which de-synced the states?

answered Oct 16, 2017 at 14:42

MilConDoin's user avatar

MilConDoinMilConDoin

7146 silver badges24 bronze badges

Also see this answer, which solved the same problem for me.

Posted by Luis Mack on 5/12/2010 at 8:50 AM I’ve found the same problem, only for a specific project when compiling on a 64-bit machine. A fix that SEEMS to work is to manually alter one character in the image stream EVERY TIME the usercontrol or form is edited in the designer

 AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w

Change to

 AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj0yLjAuMC4w

That is 00LjAuMC4w back to 0yLjAuMC4w at the end of the line (00 back to 0y)

Community's user avatar

answered Mar 21, 2012 at 13:45

Shaul Behr's user avatar

Shaul BehrShaul Behr

36.1k69 gold badges248 silver badges381 bronze badges

0

In my case it was wrong content of the file. DLL was downloaded from the web, but content of the DLL was HTML page
Try to check if it is binary file, if it seems like correct DLL

answered Jun 22, 2016 at 7:42

Ludwo's user avatar

LudwoLudwo

5,9434 gold badges32 silver badges48 bronze badges

In my case, I am using a tiny .exe that reloads the referenced DLLs via Reflection. So I just do these steps which saves my day:

From project properties on solution explorer, at build tab, I choose target platfrom x86

answered Feb 15, 2012 at 9:21

asdf_enel_hak's user avatar

asdf_enel_hakasdf_enel_hak

7,3815 gold badges42 silver badges83 bronze badges

In my case, I was running tests through MSTest and found out that I was deploying both a 32-bit and 64-bit DLL to the test directory. The program was favoring the 64-bit DLL and causing it to fail.

TL;DR Make sure you only deploy 32-bit DLLs to tests.

answered May 7, 2015 at 19:30

Mike Cluck's user avatar

Mike CluckMike Cluck

31.4k13 gold badges79 silver badges90 bronze badges

If you are importing unmanaged DLL then use

CallingConvention = CallingConvention.Cdecl 

in your DLL import method.

answered Oct 10, 2019 at 10:31

Ramkumar Shanmugam's user avatar

I got this issue solved in the ‘Windows’ way. After checking all my settings, cleaning the solution and rebuilding it, I simply close the solution and reopened it. Then it worked, so VS probably didn’t get rid of some stuff during cleaning.
When logical solutions don’t work, I usually turn to illogical (or seemingly illogical) ones. Windows doesn’t let me down.

answered Apr 30, 2013 at 9:38

user1771386's user avatar

I was able to fix this issue by matching my build version to the .NET version on the server.

I double clicked the .exe just to see what would happen and it told me to install 4.5….

So I downgraded to 4.0 and it worked!

So make sure your versions match. It ran on my dev box fine, but server had older .NET version.

answered Dec 16, 2015 at 21:58

Nateous's user avatar

NateousNateous

7579 silver badges22 bronze badges

We were having the same issue in .NET core. The solution was to download 32-bit .netcore runtime, and having your project target x86

In your csproj file add

  <PropertyGroup>
    <PlatformTarget>x86</PlatformTarget>  
  </PropertyGroup>

  <PropertyGroup>
    <RunCommand Condition="'$(PlatformTarget)' == 'x86'">$(MSBuildProgramFiles32)dotnetdotnet</RunCommand>    
  </PropertyGroup>

This was used for a Windows machine, you’d have to adjust paths and such for Linux/OSX

answered Jun 27, 2019 at 20:28

Samir Banjanovic's user avatar

In my case, I didn’t have the correct project set as the start-up project. I went to solution settings and selected the correct startup project and it worked

answered Mar 31, 2021 at 23:48

Conner's user avatar

ConnerConner

3223 silver badges10 bronze badges

In my case this same error happened after publishing. I had published before with another platform configuration.

The solution was to cleanup the publish folder first, then it worked.

(alternatively set the «delete existing files» option to true)

answered Jun 29, 2021 at 8:17

Allie's user avatar

AllieAllie

9221 gold badge9 silver badges16 bronze badges

Another reason that may cause this exception, is the C++ Redistributables missing for the target platform of your Dll. I had a tough time finding out when testing on a VM.

answered Dec 1, 2021 at 13:24

crankedrelic's user avatar

crankedreliccrankedrelic

4331 gold badge6 silver badges14 bronze badges

Please also note that the version of used dll file(s) (in my case «WebView2Loader.dll») which is in use is very crucial. I had almost the same problem with «Microsoft.WebView2.FixedVersionRuntime.101.0.1210.39.x64» when I tried to use the WebView2 component in the MMC Snap-Ins with types of «HTMLView» or «FormView».

I just copied the referenced dll file in a proper path that was accessible for the project (you could just put it beside your project output files first to test it) and then WebView2 browser started to function as expected. Microsoft error messages sometimes (at least in my case) was a little bit misleading and did not convey enough and to the point information.

I received «BadImageFormatException» that normally occurs when you mix platform targets (for example using a dll file compiled in X64 in an application that targeted for x86 or vice versa) or mix native code and .NET but that was not my problem at all. I hope this help one who may stuck in.

answered May 18, 2022 at 8:06

amirfg's user avatar

amirfgamirfg

2521 gold badge6 silver badges21 bronze badges

I also had this issue when I want to call a native DLL from C#/WPA. The below steps work for my project. Properities->Build->Platform target x64/x86(change this option, then works).

lee-m's user avatar

lee-m

2,22817 silver badges29 bronze badges

answered Jul 31, 2022 at 14:04

GuangJun Liu's user avatar

На чтение 4 мин. Просмотров 164 Опубликовано 03.09.2019

Если вы получаете код ошибки ERROR_BAD_FORMAT 11 с сообщением Попытка загрузить программу с неверным форматом , выполните действия по устранению неполадок, перечисленные в эта статья, чтобы исправить это.

Содержание

  1. ERROR_BAD_FORMAT: фон
  2. Как исправить ошибку 10: ERROR_BAD_FORMAT
  3. ERROR_BAD_FORMAT на платформах .NET
  4. Исправить ERROR_BAD_FORMAT в Windows 10

ERROR_BAD_FORMAT: фон

Ошибка «Была сделана попытка загрузить программу с неверным форматом» – довольно загадочный код ошибки. Существует не так много информации об этом, за исключением различных сообщений на форуме, где пользователи описывают проблему.

Код ошибки ERROR_BAD_FORMAT affects затрагивает в основном машины Windows 7, но иногда это также может происходить в Windows 10. Обычно это происходит, когда пользователи пытаются запустить приложение или программу на своих ПК или серверах Windows.

Код ошибки 11 часто вызывается проблемами с распространяемым пакетом VS, проблемами несовместимости программ, неправильными изменениями реестра и т. Д.

Как исправить ошибку 10: ERROR_BAD_FORMAT

ERROR_BAD_FORMAT на платформах .NET

Решение 1. Включение 32-разрядной совместимости

Пользователи сообщают, что эта ошибка в основном возникает из-за проблем несовместимости DLL, вызванных приложениями, работающими в Visual Studio, установленными в 64-разрядных операционных системах со значением TargetCPU = Any CPU. Другими словами, приложения пытаются загрузить библиотеки DLL, созданные для 32-разрядных платформ, на компьютерах x64 и наоборот.

Чтобы решить эту проблему, вам нужно настроить утилиту для запуска в качестве 32-битного .NET-процесса с использованием CORFLAGS.

  1. Загрузите CORFLAGS со страницы поддержки Microsoft
  2. Запустите его следующим образом, чтобы включить 32-битный режим выполнения: corflags utility.exe/32Bit +
  3. Используйте/32Bit- в приведенной выше командной строке, чтобы выключить его.

Вы также можете включить 32-битную совместимость в приложении формы Windows. Просто щелкните правой кнопкой мыши Project> перейдите в Properties> Build> check Prefer 32-bit.

Кроме того, вы также можете использовать опцию «Любой процессор» и использовать выделенный код, чтобы определить, какую DLL использовать. Таким образом, вы будете использовать одну сборку для обработки как 32-битных, так и 64-битных платформ. Вот код для использования:

if (Environment.Is64BitProcess)
{
// вызов MiniDumpWriteDump
}
еще
{
// вызов MiniDumpWriteDumpX86
}

Вы также можете использовать условия препроцессора, но в этом случае вам нужно скомпилировать две разные сборки. Другими словами, скомпилируйте 32-разрядную сборку для 32-разрядных платформ и отдельную 64-разрядную сборку для 64-разрядных платформ.

Решение 2. Установите правильный распространяемый пакет VS

На вашем целевом ПК может не быть установлен соответствующий распространяемый пакет VS. Перейдите на веб-страницу Microsoft и установите соответствующую версию VS Redistributable Package в вашей системе.

Исправить ERROR_BAD_FORMAT в Windows 10

В Windows 10 ошибка «Попытка загрузить программу с неверным форматом» обычно возникает при запуске и связана с проблемами несовместимости программного обеспечения. Пользователи подтверждают, что эта проблема часто возникает при использовании инструментов замены в меню «Пуск».

Если вы используете замену меню «Пуск» в Windows 10, удалите его, и это должно помочь.

Кроме того, не забудьте восстановить реестр . Самый простой способ восстановить реестр – использовать специальный инструмент, такой как CCleaner. Не забудьте сначала сделать резервную копию реестра, если что-то пойдет не так. Если вы не установили очиститель реестра на свой компьютер, ознакомьтесь с нашей статьей о лучших очистителях реестра для использования на ПК с Windows 10.

Вы также можете использовать средство проверки системных файлов Microsoft для проверки повреждений системных файлов. Вот как запустить сканирование SFC:

1. Перейдите в Пуск>, введите cmd >, щелкните правой кнопкой мыши Командную строку> выберите Запуск от имени администратора.

2. Теперь введите команду sfc/scannow

3. Дождитесь завершения процесса сканирования и перезагрузите компьютер. Все поврежденные файлы будут заменены при перезагрузке.

Мы надеемся, что перечисленные выше решения помогли вам исправить код ошибки ERROR_BAD_FORMAT 10. Как всегда, если вы сталкивались с другими решениями, чтобы решить эту проблему, вы можете перечислить шаги устранения неполадок в комментариях ниже.

«Была сделана попытка загрузить программу, имеющую неверный формат», даже если платформы одинаковые



Я вызываю функции из 32-разрядной неуправляемой DLL на 64-разрядной системе. Что я получаю это:

BadImageFormatException: была сделана попытка загрузить программу с неверным форматом. (Исключение из HRESULT: 0x8007000B)

сначала у меня были свои проекты, настроенные на любую платформу процессора, поэтому я изменил их на x86, но эта ошибка все еще происходит. Это действительно единственное исправление, которое я знаю для этого.

библиотеки DLL не повреждены или что-то еще, потому что я могу использовать их с другими программами (что у меня нет источника). Я думал, что, возможно, это не было найти зависимость, но я проверил, и они все там. Кроме того, разве это не бросит DllNotFoundException в этом случае?

что еще я могу сделать? И прежде чем вы скажете: «вместо этого используйте 64-разрядную неуправляемую DLL», позвольте мне указать, что ее нет.


1739  


15  

15 ответов:

при попытке запустить 32-разрядные приложения на IIS 7 (и / или 64-разрядной ОС), вы получите ту же ошибку. Итак, из IIS 7 щелкните правой кнопкой мыши на пуле приложений приложений и перейдите в раздел «Дополнительные настройки» и измените «включить 32-разрядные приложения» на «TRUE».

перезагрузите ваш сайт и он должен работать.

enter image description here

Почему-то Build флажок в Диспетчере конфигураций был снят для моего исполняемого файла, поэтому он все еще работал со старой сборкой любого процессора. После того, как я исправил это, Visual Studio пожаловался, что он не может отладить сборку, но это было исправлено с помощью перезагрузки.

на Visual Studio, щелкните правой кнопкой мыши проект -> на левой панели нажмите кнопку Build tab,

Project properties, build tab

под Целевой Платформы выберите x86 (или в более общем плане архитектура чтобы соответствовать библиотеке, на которую вы ссылаетесь)

Project properties, platform target

надеюсь, это кому-то поможет!

У меня тоже была эта проблема. Пробовал все предложения здесь, но они не помогли.

Я нашел еще одну вещь, чтобы проверить, что установил его для меня. В Visual Studio щелкните правой кнопкой мыши на проекте и откройте «Свойства». Нажмите на вкладку «компиляция», а затем нажмите на кнопку» Дополнительные параметры компиляции » в нижней части.

Проверьте выпадающее меню «целевой процессор». Он должен соответствовать «платформе», которую вы строите. То есть, если вы создаете «любой процессор», то «целевой процессор» должен сказать » любой ЦПУ.» Пройдите через все ваши платформы, сделав их активными и проверьте эту настройку.

Если вы столкнулись с этой ошибкой, когда вы нажимаете зеленую кнопку со стрелкой, чтобы запустить приложение, но все еще хотите запустить приложение в 64-разрядной версии. Вы можете сделать это в VS 2013 или 2015

перейдите в раздел: Инструменты > Параметры > проекты и решения > веб-проекты > используйте 64-разрядную версию IIS Express

Если вы используете любой ЦП, вы можете столкнуться с этой проблемой, если предпочитаю 32-бит проверил:

убедитесь, что вы убрать этот параметр в свойства проекта Build tab!

enter image description here

немного не по теме для этого поста, но поиск этого сообщения об ошибке привел меня сюда.

Если вы строите через team system и получаете эту ошибку, вкладка процесс определения сборки имеет параметр «платформа MSBuild». Если установлено значение «авто», может возникнуть эта проблема. Изменение его на » X86 » также может устранить ошибку.

в моем случае я использовал собственную DLL в C#. Эта DLL зависела от нескольких других DLL, которые отсутствовали. После того, как эти другие DLL были добавлены все работало.

см. Также ответ, которые решали ту же проблему для меня.

опубликовано Luis Mack на 5/12/2010 в 8: 50 AM я нашел ту же проблему, только для конкретного проекта при компиляции на 64-разрядной машине. Исправление, которое, кажется, работает, чтобы вручную изменить один символ в потоке изображений каждый раз, когда usercontrol или форма редактируется в конструкторе

 AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w

заменить на

 AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj0yLjAuMC4w

это 00LjAuMC4w на 0yLjAuMC4w в конце строки (00 назад к 0y)

в моем случае, я использую крошечный .exe, который загружает библиотеки DLL, которые ссылаются посредством отражения. Поэтому я просто делаю эти шаги, которые спасают мой день:

в свойствах проекта в обозревателе решений щелкните на вкладке построить, Я выбираю целевая платформа х86

в моем случае я запускал тесты через MSTest и обнаружил, что я развертываю как 32-разрядную, так и 64-разрядную DLL в тестовый каталог. Программа предпочитала 64-разрядную DLL и вызывала ее сбой.

TL; DR убедитесь, что вы развертываете только 32-разрядные библиотеки DLL для тестов.

Я получил эту проблему решена в «Windows» Способ. После проверки всех моих настроек, очистки решения и его восстановления я просто закрываю решение и снова открываю его. Затем это сработало, поэтому VS, вероятно, не избавился от некоторых вещей во время очистки.
Когда логические решения не работают, я обычно обращаюсь к нелогичным (или кажущимся нелогичными). Окна меня не подводят.

Я смог исправить эту проблему, сопоставив мою версию сборки с версией .NET на сервере.

Я дважды щелкнул .exe просто чтобы посмотреть, что произойдет, и он сказал мне установить 4.5….

Так что я понизил до 4.0 и это сработало!

поэтому убедитесь, что ваши версии совпадают. Он работал на моем dev box отлично, но сервер имел более старую версию .NET.

в моем случае это было неправильное содержимое файла. DLL был загружен из интернета, но содержание DLL было HTML page
Попробуйте проверить, если это двоичный файл, если это кажется правильным DLL

основываясь на ответе @paibamboo

Он сказал: перейдите в раздел: Инструменты > Параметры > проекты и решения > веб-проекты > используйте 64-разрядную версию IIS Express

мой коллега поставил этот флажок (он явно искал его), но имел сообщение об ошибке в вопросе. Через несколько часов он снял флажок и проверил его снова. И вот: код теперь работал с успехом.

кажется, что есть два места, где сохранено состояние этого ящика, которое стал не синхронизирован. ООН — и перепроверки он синхронизируется это снова.

вопрос для более знающих пользователей: было ли обновление или что-то на прошлой неделе (для VS 2015), которое де-синхронизировало состояния?

При сборке решения

Error    1    Невозможно загрузить файл или сборку "file:///D:/SOURCES/bin/x86/RELEASE/ELA/ELA.DocumentImaging.dll" или один из зависимых от них компонентов. Была сделана попытка загрузить программу, имеющую неверный формат. Строка 304, позиция 5.    D:/SOURCES/ELA/ELA.ClientMainForm.resx    304    5    ELA.Client

по английски это выглядит примерно так

Error 1 Could not load file or assembly 'file:///c:/users//documents/visual studio 2010/Projects/WindowsFormsApplication5/ClassLibrary1/bin/x86/Debug/ClassLibrary1.dll' or one of its dependencies. An attempt was made to load a program with an incorrect format. Line 174, position 5. c:usersdocumentsvisual studio 2010ProjectsWindowsFormsApplication5WindowsFormsApplication5Form1.resx 174 5 WindowsFormsApplication5

Нашел статейку http://blogs.msdn.com/b/visualstudio/archive/2010/06/19/resgen-exe-error-an-attempt-was-made-to-load-a-program-with-an-incorrect-format.aspx основной смысл которой сводился к тому что некий процесс (наверное имелось ввиду — процесс сборки) пытается загрузить сборку на которую у него есть ссылка с отличающейся архитектурой.

В статье предлагаются 3 способоа обойти проблему. Самый первый, собирать с AnyCPU я попробовал, применил для  всего решения. Это не помогло.

Остальные два решения

Notes on Workarounds 2 and 3:Workarounds 2 and 3 apply specifically to the scenario where a project targeting .NET 3.5 has a .resx file that references a 32-bit assembly. There is currently no workaround for targeting 4.0 and trying to reference a 32-bit assembly from 64-bit MSBuild or vice versa – aside from changing to use the MSBuild.exe of the architecture you’re targeting.Please be aware that by forcing ResGen.exe to execute as 32-bit, you are essentially introducing the opposite problem: ResGen.exe will now error if you try to load 64-bit architecture-specific reference assemblies in it.
Workaround 2:Make ResGen.exe 32-bit by:1. Cd “%ProgramFiles(x86)%Microsoft SDKsWindowsv7.0ABin”2. Corflags /32Bit+ /Force ResGen.exeHowever, since our current build process has a heuristic that assumes that ResGen.exe is MSIL, just doing the above step will cause a different error (“The specified task executable "ResGen.exe" could not be run. The handle is invalid”) unless you inform GenerateResource that ResGen.exe is now 32-bit via setting the property “ResGenToolArchitecture” to “Managed32Bit”. This can be accomplished by doing one of the following:

1. Adding <ResGenToolArchitecture>Managed32Bit</ResGenToolArchitecture> to a PropertyGroup in the project file of any project that generates resources targeting .NET 3.5 – since the corflags trick affects the bitness of ResGen.exe on a system-wide level, the property must be set for all affected projects as well.

2. OR If running MSBuild.exe directly, passing it using the global property switch: ‘/p:ResGenToolArchitecture=Managed32Bit’

3. OR Setting it as an environment variable in the command window that MSBuild.exe is run from or the VS 2010 IDE is opened from: ‘set RESGENTOOLARCHITECTURE=Managed32Bit’

Pros: Doesn’t require changing the architecture of the referenced assembly

Cons: More complicated; requires baking the workaround either into the project file, or into your build system as a whole.
Workaround 3:

Force the CLR to load all MSIL applications as 32-bit by:

1. Cd “%windir%Microsoft.NETFramework64v2.0.50727”

2. Ldr64.exe setwow

Then, since this also is a way to force ResGen.exe to execute as though it’s a 32-bit process, you must also go through the second part of Workaround 2 (setting ResGenToolArchitecture=Managed32Bit).

Pros: Doesn’t require changing the architecture of the referenced assembly

Cons: Affects how the CLR works for the entire machine. Also the same cons as Workaround 2.

я не стал пробовать, т.к. возникли некоторые сомнения. Попытался разобраться с файлом ресурсов MainForm.resx, который вызывает ошибку. Декодировал ресурс из base64 в простой текст и увидел что в самом закодированном ресурсе стоит ссылка на сборку System.Windows.Forms, Version=4.0.0.0 и это при том что в свойствах самого проекта был задан Target Framework = 2.0.

(Примечание:При декодировании base64 столкнулся с проблемой).

Копаю дальше. Нашел баг на Microsoft Connect который гораздо ближе по смыслу чем первая найденная статья. Человек подтверждает догадки

Posted by DanyR on 28.10.2010 at 0:48
The patch from Ed Hartley has the following internal effect:

I decoded an ImageStream with «j00L» and «j0yL» and found out, that in VS2010 MS is serializing ImageLists with a reference to System.Windows.Forms, Version=4.0, even when the project is set to 2.0. The tip changes exactly this («0» to «y» changes «4» to «2»).

Please, please, please fix this ASAP.

Daniel

Там же к статье приложена программка для правки файлов ресурсов Set2010ImageListsToNET2.zip которая правит ссылку в ресурсном файле на System.Windows.Forms, Version=2.0.0.0.

Короче нужно те ресурсные файлы которые вызывают ошибку при сборке обработать этой прогой — это помогает.


«Была сделана попытка загрузить программу, имеющую неверный формат», даже если платформы одинаковые

Я вызываю функции из 32-разрядной неуправляемой DLL в 64-разрядной системе. Что я получаю:

BadImageFormatException: была предпринята попытка загрузить программу с неправильным форматом. (Исключение из HRESULT: 0x8007000B)

сначала у меня были мои проекты, установленные на любую платформу CPU, поэтому я изменил их на x86, но эта ошибка все еще происходит. Это единственное решение, которое я знаю.

библиотеки DLL не повреждены или что-то еще, потому что я могу использовать их с другими программами (у меня нет источника). Я думал, что, возможно, это не было нахождение зависимости, но я проверил, и все они там. Кроме того, разве это не бросит DllNotFoundException в этом случае?

что еще я могу сделать? И прежде чем вы скажете: «вместо этого используйте 64-разрядную неуправляемую DLL», позвольте мне указать, что ее нет.

15 ответов


Если вы попытаетесь запустить 32-разрядные приложения на IIS 7 (и/или 64-разрядной ОС), вы получите ту же ошибку. Итак, из IIS 7 щелкните правой кнопкой мыши пул приложений и перейдите в раздел» Дополнительные настройки «и измените» включить 32-разрядные приложения «на»TRUE».

перезагрузите ваш сайт и он должен работать.

enter image description here


Почему-то Build флажок в Configuration Manager был снят для моего исполняемого файла, поэтому он все еще работал со старой сборкой процессора. После того, как я исправил это, Visual Studio пожаловалась, что не может отладить сборку, но это было исправлено с перезапуском.


на Visual Studio, щелкните правой кнопкой мыши проект — > на левой панели нажмите кнопку Build tab,

Project properties, build tab

под Целевой Платформы выберите x86 (или, как правило,архитектура в матче с библиотекой, на которую вы ссылаетесь)

Project properties, platform target

надеюсь, это кому-то поможет!

60

автор: Marvin Thobejane


У меня тоже была эта проблема. Пробовал все предложения здесь, но они не помогли.

Я нашел еще одну вещь, чтобы проверить, что установил его для меня. В Visual Studio щелкните правой кнопкой мыши проект и откройте «Свойства». Перейдите на вкладку «компиляция», а затем нажмите» Дополнительные параметры компиляции » внизу.

Проверьте раскрывающийся список «целевой процессор». Он должен соответствовать» платформе», которую вы строите. То есть, если вы создаете «любой процессор», то «целевой процессор» должен сказать » любой ЦПУ.» Пройдите через все ваши платформы, сделав их активными и проверьте эту настройку.


Если вы столкнулись с этой ошибкой при нажатии зеленой кнопки со стрелкой для запуска приложения, но все еще хотите запустить приложение в 64 бит. Вы можете сделать это в VS 2013 или 2015

перейти к: Инструменты > Параметры > проекты и решения > веб-проекты > использовать 64-разрядную версию IIS Express


Если вы используете любой CPU, вы можете столкнуться с этой проблемой, если предпочитают 32-бит проверил:

убедитесь, что вы убрать эта опция в свойстве проекта Build tab!

enter image description here


немного не по теме для этого сообщения, но поиск этого сообщения об ошибке привел меня сюда.

Если вы строите через team system и получаете эту ошибку, вкладка процесс определения сборки имеет параметр «MSBuild Platform». Если установлено значение «Auto», может возникнуть эта проблема. Изменение его на » X86 » также может устранить ошибку.


в моем случае я использовал собственную DLL в C#. Эта DLL зависела от нескольких других DLL, которые отсутствовали. Как только эти другие DLL были добавлены, все сработало.


см. Также ответ, которые решали ту же проблему для меня.

опубликовано Luis Mack на 5/12/2010 в 8: 50 AM я нашел ту же проблему, только для конкретного проекта при компиляции на 64-битной машине. Исправление, которое, похоже, работает, — вручную изменять один символ в потоке изображений каждый раз, когда usercontrol или форма редактируются в конструкторе

 AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w

заменить на

 AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj0yLjAuMC4w

это 00LjAuMC4w на 0yLjAuMC4w в конце строки (00 назад к 0y)


в моем случае, я использую крошечный .exe, который перезагружает указанные библиотеки DLL через отражение. Поэтому я просто делаю эти шаги, которые спасают мой день:

из свойств проекта в обозревателе решений на вкладке сборка я выбираю целевой platfrom x86


в моем случае я запускал тесты через MSTest и узнал, что я развертываю как 32-разрядную, так и 64-разрядную DLL в тестовый каталог. Программа благоприятствовала 64-битной DLL и вызывала ее сбой.

TL; DR убедитесь, что вы развертываете только 32-разрядные библиотеки DLL для тестов.


Я решил эту проблему в «Windows». Проверив все настройки, очистив решение и восстановив его, я просто закрываю решение и снова открываю его. Тогда это сработало, поэтому VS, вероятно, не избавился от некоторых вещей во время уборки.
Когда логические решения не работают, я обычно обращаюсь к нелогичным (или кажущимся нелогичными). Окна меня не подводят.


Я смог исправить эту проблему, сопоставив мою версию сборки с версией .NET на сервере.

Я дважды щелкнул .exe просто посмотреть, что произойдет, и он сказал мне установить 4.5….

поэтому я понизился до 4.0, и это сработало!

поэтому убедитесь, что ваши версии совпадают. Он работал на моем dev box отлично, но сервер имел более старую версию .NET.


в моем случае это было неправильное содержимое файла. DLL была загружена из интернета, но содержимое DLL было HTML-страницей: D
Попробуйте проверить, если это двоичный файл, если это кажется правильным DLL:)


основываясь на ответе @paibamboo

Он сказал: перейдите к: Инструменты > Параметры > проекты и решения > веб-проекты > использовать 64-разрядную версию IIS Express

мой коллега установил этот флажок (он явно искал его), но имел сообщение об ошибке в вопросе. Через несколько часов он снял флажок и проверил его снова. О чудо: код теперь работал успешно.

кажется, что есть два места, где сохранено состояние этого окна, которое вышел из синхронизации. Un-и перепроверка снова синхронизировала его.

вопрос для более знающих пользователей: было ли обновление или что-то на прошлой неделе (для VS 2015), которое де-синхронизировало Штаты?


Программисты, занимающиеся разработкой различного программного обеспечения в интегрированной среде разработки Microsoft Visual Studio C++, могут столкнуться с такой неприятностью, как ошибка 0x8007000B. При ее появлении перед пользователями может появиться окошко со следующим текстом:

Была сделана попытка загрузить программу, имеющую неверный формат. (Исключение из HRESULT: 0x8007000B)

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

HRESULT: 0x8007000B

Способ устранения ошибки 0x8007000B

В данной статье мы рассмотрим одну из ситуаций, при которой может возникать код ошибки 0x8007000B. Итак, давайте предположим, что вы занимаетесь разработкой приложения в Visual Studio Express, для нормальной работы которому требуется применение внешней библиотеки динамической компоновки(DLL-файл). Вы проверили свое приложение – оно работает на вашей машине.

Далее вы предприняли попытку запустить данное приложение на компьютере другого пользователя либо на своей иной машине, которая работает на 64-битной операционной системе. Однако, при запуске перед вами появилось неприятное сообщение «Была сделана попытка загрузить программу, имеющую неверный формат. (Исключение из HRESULT: 0x8007000B)».

В данной ситуации, скорее всего, вы увидели ошибку HRESULT: 0x8007000B из-за того, что внешняя динамическая библиотека, к функциям в которой выполняется обращение, была скомпилирована, чтобы работать под 32-битными операционными системами. Если во время компиляции вы не не укажете целевую платформу, то приложение будет нацелено на работу под 32-битной либо под 64-битную операционной системой. Соответственно, 64-битное приложение сможет работать только с 64-битными DLL.

Чтобы избавиться от ошибки 0x8007000B, вам нужно вернуться в настройки проекта, после чего поменять целевую платформу на «x86». Вероятно, ранее у вас там была выбрана настройка «Любой ЦП», что и привело к компиляции x64 приложения. Как только вы перекомпилируете приложение, оно спокойно сможет работать на любом ПК в 32-битном режиме, а также у него появится возможность производить обращения к нужной вам 32-битной динамической библиотеке. После этого ошибка к кодом 0x8007000B будет устранена.

Подробная информация об использовании оперативной
(JIT) отладки вместо данного диалогового
окна содержится в конце этого сообщения.

************** Текст исключения **************
System.BadImageFormatException: Была сделана попытка загрузить программу, имеющую неверный формат. (Исключение из HRESULT: 0x8007000B)
в RE.Form44.DLL(Int32& HCEC, Int32& GEOMETRIA__RE, Int32& TUBI__RE, Int32& PASSO__RE, Double& PASSO_LIBERO__RE, Int32& ALETTE__RE, Int32& ALETTE_Xoption__RE, Int32& FLUIDO__RE, Double& FLUIDO_bis__RE, Int32& COLLETTORE__RE, Int32& COLLETTORE_dd__RE, Int32& CIRCUITI__RE, Double& TUBI_SALTATI__RE, Int32& null15, Double& MAX_dp1_UNO__RE, Double& ALTEZZA_slm__RE, Double& FATTORE_SPORCAMENTO__RE, Double& FATTORE_SICUREZZA__RE, Double& PORTATA2, Double& VELOCITA2, Double& T2IN, Double& UMIDITA2IN, Double& T2OUT, Double& T1IN, Double& T1OUT, Double& PORTATA1, Double& POTENZA, Double& LUNGHEZZA, Double& ALTEZZA, Double& RANGHI, Double& CIRCUITI, Int32& COLLETTORE_LT3, Double& _PORTATA2, Double& _VELOCITA2, Double& _T2IN, Double& _UMIDITA2IN, Double& _T2OUT, Double& _UMIDITA2OUT, Double& _CADUTA_PRESS2, Double& _SHF, Double& _CONT_H2O, Double& _T1IN, Double& _T1OUT, Double& _PORTATA1, Double& _VELOCITA1, Double& _CADUTA_PRESS1, Double& _RESA_NOM, Double& _RESA_MAX, Double& _LUNGHEZZA, Double& _ALTEZZA, Double& _RANGHI, Double& _CIRCUITI, Double& _SUPERFICIE1, Double& _SUPERFICIE2, Double& _VOLUME, Double& _PESO, Double& _PRESSIONE_ATM, Double& _CADUTA_PRESS1_COL, Double& _PORTATA2_kg_s, Double& _PORTATA1_kg_s, Double& _CONT_H2O_IN, Double& _CONT_H2O_OUT, Double& _TITOLO1, String& CODE, String& FLUIDO, Double& PRESSIONE1_Tec, Double& AUX_1, String& AUX_2, Double& AUX_3, String& AUX_4, Double& AUX_5, Double& AUX_6, Double& AUX_7, Double& AUX_8)
в RE.Form1.Load_Set__FILE()
в RE.Form1.Form1_Load(Object sender, EventArgs e)
в System.Windows.Forms.Form.OnLoad(EventArgs e)
в System.Windows.Forms.Control.CreateControl(Boolean fIgnoreVisible)
в System.Windows.Forms.Control.CreateControl()
в System.Windows.Forms.Control.WmShowWindow(Message& m)
в System.Windows.Forms.Control.WndProc(Message& m)
в System.Windows.Forms.Control.ControlNativeWindow.W ndProc(Message& m)
в System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)

************** Загруженные сборки **************
mscorlib
Версия сборки: 2.0.0.0
Версия Win32: 2.0.50727.5420 (Win7SP1.050727-5400)
CodeBase: file:///C:/Windows/Microsoft.NET/Framework64/v2.0.50727/mscorlib.dll
—————————————-
REcalc
Версия сборки: 1.0.3727.5274
Версия Win32: 1.0.3727.5274
CodeBase: file:///C:/Program%20Files%20(x86)/Roen%20Est%20S.p.A/REcalc/REcalc.exe
—————————————-
System.Windows.Forms
Версия сборки: 2.0.0.0
Версия Win32: 2.0.50727.5420 (Win7SP1.050727-5400)
CodeBase: file:///C:/Windows/assembly/GAC_MSIL/System.Windows.Forms/2.0.0.0__b77a5c561934e089/System.Windows.Forms.dll
—————————————-
System
Версия сборки: 2.0.0.0
Версия Win32: 2.0.50727.5420 (Win7SP1.050727-5400)
CodeBase: file:///C:/Windows/assembly/GAC_MSIL/System/2.0.0.0__b77a5c561934e089/System.dll
—————————————-
System.Drawing
Версия сборки: 2.0.0.0
Версия Win32: 2.0.50727.5420 (Win7SP1.050727-5400)
CodeBase: file:///C:/Windows/assembly/GAC_MSIL/System.Drawing/2.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll
—————————————-
Microsoft.VisualBasic
Версия сборки: 8.0.0.0
Версия Win32: 8.0.50727.5420 (Win7SP1.050727-5400)
CodeBase: file:///C:/Windows/assembly/GAC_MSIL/Microsoft.VisualBasic/8.0.0.0__b03f5f7f11d50a3a/Microsoft.VisualBasic.dll
—————————————-
CommonFunctions
Версия сборки: 1.0.0.0
Версия Win32: 1.0.0.0
CodeBase: file:///C:/Program%20Files%20(x86)/Roen%20Est%20S.p.A/REcalc/CommonFunctions.DLL
—————————————-
mscorlib.resources
Версия сборки: 2.0.0.0
Версия Win32: 2.0.50727.5420 (Win7SP1.050727-5400)
CodeBase: file:///C:/Windows/Microsoft.NET/Framework64/v2.0.50727/mscorlib.dll
—————————————-
System.Windows.Forms.resources
Версия сборки: 2.0.0.0
Версия Win32: 2.0.50727.4927 (NetFXspW7.050727-4900)
CodeBase: file:///C:/Windows/assembly/GAC_MSIL/System.Windows.Forms.resources/2.0.0.0_ru_b77a5c561934e089/System.Windows.Forms.resources.dll
—————————————-

************** Оперативная отладка (JIT) **************
Для подключения оперативной (JIT) отладки файл .config данного
приложения или компьютера (machine.config) должен иметь
значение jitDebugging, установленное в секции system.windows.forms.
Приложение также должно быть скомпилировано с включенной
отладкой.

Например:

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

При включенной отладке JIT любое необрабатываемое исключение
пересылается отладчику JIT, зарегистрированному на данном компьютере,
вместо того чтобы обрабатываться данным диалоговым окном.

На чтение 4 мин. Просмотров 173 Опубликовано 03.09.2019

Если вы получаете код ошибки ERROR_BAD_FORMAT 11 с сообщением Попытка загрузить программу с неверным форматом , выполните действия по устранению неполадок, перечисленные в эта статья, чтобы исправить это.

Содержание

  1. ERROR_BAD_FORMAT: фон
  2. Как исправить ошибку 10: ERROR_BAD_FORMAT
  3. ERROR_BAD_FORMAT на платформах .NET
  4. Исправить ERROR_BAD_FORMAT в Windows 10

ERROR_BAD_FORMAT: фон

Ошибка «Была сделана попытка загрузить программу с неверным форматом» – довольно загадочный код ошибки. Существует не так много информации об этом, за исключением различных сообщений на форуме, где пользователи описывают проблему.

Код ошибки ERROR_BAD_FORMAT affects затрагивает в основном машины Windows 7, но иногда это также может происходить в Windows 10. Обычно это происходит, когда пользователи пытаются запустить приложение или программу на своих ПК или серверах Windows.

Код ошибки 11 часто вызывается проблемами с распространяемым пакетом VS, проблемами несовместимости программ, неправильными изменениями реестра и т. Д.

Как исправить ошибку 10: ERROR_BAD_FORMAT

ERROR_BAD_FORMAT на платформах .NET

Решение 1. Включение 32-разрядной совместимости

Пользователи сообщают, что эта ошибка в основном возникает из-за проблем несовместимости DLL, вызванных приложениями, работающими в Visual Studio, установленными в 64-разрядных операционных системах со значением TargetCPU = Any CPU. Другими словами, приложения пытаются загрузить библиотеки DLL, созданные для 32-разрядных платформ, на компьютерах x64 и наоборот.

Чтобы решить эту проблему, вам нужно настроить утилиту для запуска в качестве 32-битного .NET-процесса с использованием CORFLAGS.

  1. Загрузите CORFLAGS со страницы поддержки Microsoft
  2. Запустите его следующим образом, чтобы включить 32-битный режим выполнения: corflags utility.exe/32Bit +
  3. Используйте/32Bit- в приведенной выше командной строке, чтобы выключить его.

Вы также можете включить 32-битную совместимость в приложении формы Windows. Просто щелкните правой кнопкой мыши Project> перейдите в Properties> Build> check Prefer 32-bit.

Кроме того, вы также можете использовать опцию «Любой процессор» и использовать выделенный код, чтобы определить, какую DLL использовать. Таким образом, вы будете использовать одну сборку для обработки как 32-битных, так и 64-битных платформ. Вот код для использования:

if (Environment.Is64BitProcess)
{
// вызов MiniDumpWriteDump
}
еще
{
// вызов MiniDumpWriteDumpX86
}

Вы также можете использовать условия препроцессора, но в этом случае вам нужно скомпилировать две разные сборки. Другими словами, скомпилируйте 32-разрядную сборку для 32-разрядных платформ и отдельную 64-разрядную сборку для 64-разрядных платформ.

Решение 2. Установите правильный распространяемый пакет VS

На вашем целевом ПК может не быть установлен соответствующий распространяемый пакет VS. Перейдите на веб-страницу Microsoft и установите соответствующую версию VS Redistributable Package в вашей системе.

Исправить ERROR_BAD_FORMAT в Windows 10

В Windows 10 ошибка «Попытка загрузить программу с неверным форматом» обычно возникает при запуске и связана с проблемами несовместимости программного обеспечения. Пользователи подтверждают, что эта проблема часто возникает при использовании инструментов замены в меню «Пуск».

Если вы используете замену меню «Пуск» в Windows 10, удалите его, и это должно помочь.

Кроме того, не забудьте восстановить реестр . Самый простой способ восстановить реестр – использовать специальный инструмент, такой как CCleaner. Не забудьте сначала сделать резервную копию реестра, если что-то пойдет не так. Если вы не установили очиститель реестра на свой компьютер, ознакомьтесь с нашей статьей о лучших очистителях реестра для использования на ПК с Windows 10.

Вы также можете использовать средство проверки системных файлов Microsoft для проверки повреждений системных файлов. Вот как запустить сканирование SFC:

1. Перейдите в Пуск>, введите cmd >, щелкните правой кнопкой мыши Командную строку> выберите Запуск от имени администратора.

2. Теперь введите команду sfc/scannow

3. Дождитесь завершения процесса сканирования и перезагрузите компьютер. Все поврежденные файлы будут заменены при перезагрузке.

Мы надеемся, что перечисленные выше решения помогли вам исправить код ошибки ERROR_BAD_FORMAT 10. Как всегда, если вы сталкивались с другими решениями, чтобы решить эту проблему, вы можете перечислить шаги устранения неполадок в комментариях ниже.

«Была сделана попытка загрузить программу, имеющую неверный формат», даже если платформы одинаковые



Я вызываю функции из 32-разрядной неуправляемой DLL на 64-разрядной системе. Что я получаю это:

BadImageFormatException: была сделана попытка загрузить программу с неверным форматом. (Исключение из HRESULT: 0x8007000B)

сначала у меня были свои проекты, настроенные на любую платформу процессора, поэтому я изменил их на x86, но эта ошибка все еще происходит. Это действительно единственное исправление, которое я знаю для этого.

библиотеки DLL не повреждены или что-то еще, потому что я могу использовать их с другими программами (что у меня нет источника). Я думал, что, возможно, это не было найти зависимость, но я проверил, и они все там. Кроме того, разве это не бросит DllNotFoundException в этом случае?

что еще я могу сделать? И прежде чем вы скажете: «вместо этого используйте 64-разрядную неуправляемую DLL», позвольте мне указать, что ее нет. ;)


1816  


15  

15 ответов:

при попытке запустить 32-разрядные приложения на IIS 7 (и / или 64-разрядной ОС), вы получите ту же ошибку. Итак, из IIS 7 щелкните правой кнопкой мыши на пуле приложений приложений и перейдите в раздел «Дополнительные настройки» и измените «включить 32-разрядные приложения» на «TRUE».

перезагрузите ваш сайт и он должен работать.

enter image description here

Почему-то Build флажок в Диспетчере конфигураций был снят для моего исполняемого файла, поэтому он все еще работал со старой сборкой любого процессора. После того, как я исправил это, Visual Studio пожаловался, что он не может отладить сборку, но это было исправлено с помощью перезагрузки.

на Visual Studio, щелкните правой кнопкой мыши проект -> на левой панели нажмите кнопку Build tab,

Project properties, build tab

под Целевой Платформы выберите x86 (или в более общем плане архитектура чтобы соответствовать библиотеке, на которую вы ссылаетесь)

Project properties, platform target

надеюсь, это кому-то поможет! :)

У меня тоже была эта проблема. Пробовал все предложения здесь, но они не помогли.

Я нашел еще одну вещь, чтобы проверить, что установил его для меня. В Visual Studio щелкните правой кнопкой мыши на проекте и откройте «Свойства». Нажмите на вкладку «компиляция», а затем нажмите на кнопку» Дополнительные параметры компиляции » в нижней части.

Проверьте выпадающее меню «целевой процессор». Он должен соответствовать «платформе», которую вы строите. То есть, если вы создаете «любой процессор», то «целевой процессор» должен сказать » любой ЦПУ.» Пройдите через все ваши платформы, сделав их активными и проверьте эту настройку.

Если вы столкнулись с этой ошибкой, когда вы нажимаете зеленую кнопку со стрелкой, чтобы запустить приложение, но все еще хотите запустить приложение в 64-разрядной версии. Вы можете сделать это в VS 2013 или 2015

перейдите в раздел: Инструменты > Параметры > проекты и решения > веб-проекты > используйте 64-разрядную версию IIS Express

Если вы используете любой ЦП, вы можете столкнуться с этой проблемой, если предпочитаю 32-бит проверил:

убедитесь, что вы убрать этот параметр в свойства проекта Build tab!

enter image description here

немного не по теме для этого поста, но поиск этого сообщения об ошибке привел меня сюда.

Если вы строите через team system и получаете эту ошибку, вкладка процесс определения сборки имеет параметр «платформа MSBuild». Если установлено значение «авто», может возникнуть эта проблема. Изменение его на » X86 » также может устранить ошибку.

в моем случае я использовал собственную DLL в C#. Эта DLL зависела от нескольких других DLL, которые отсутствовали. После того, как эти другие DLL были добавлены все работало.

см. Также ответ, которые решали ту же проблему для меня.

опубликовано Luis Mack на 5/12/2010 в 8: 50 AM я нашел ту же проблему, только для конкретного проекта при компиляции на 64-разрядной машине. Исправление, которое, кажется, работает, чтобы вручную изменить один символ в потоке изображений каждый раз, когда usercontrol или форма редактируется в конструкторе

 AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w

заменить на

 AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj0yLjAuMC4w

это 00LjAuMC4w на 0yLjAuMC4w в конце строки (00 назад к 0y)

в моем случае, я использую крошечный .exe, который загружает библиотеки DLL, которые ссылаются посредством отражения. Поэтому я просто делаю эти шаги, которые спасают мой день:

в свойствах проекта в обозревателе решений щелкните на вкладке построить, Я выбираю целевая платформа х86

в моем случае я запускал тесты через MSTest и обнаружил, что я развертываю как 32-разрядную, так и 64-разрядную DLL в тестовый каталог. Программа предпочитала 64-разрядную DLL и вызывала ее сбой.

TL; DR убедитесь, что вы развертываете только 32-разрядные библиотеки DLL для тестов.

Я получил эту проблему решена в «Windows» Способ. После проверки всех моих настроек, очистки решения и его восстановления я просто закрываю решение и снова открываю его. Затем это сработало, поэтому VS, вероятно, не избавился от некоторых вещей во время очистки.
Когда логические решения не работают, я обычно обращаюсь к нелогичным (или кажущимся нелогичными). Окна меня не подводят. :)

Я смог исправить эту проблему, сопоставив мою версию сборки с версией .NET на сервере.

Я дважды щелкнул .exe просто чтобы посмотреть, что произойдет, и он сказал мне установить 4.5….

Так что я понизил до 4.0 и это сработало!

поэтому убедитесь, что ваши версии совпадают. Он работал на моем dev box отлично, но сервер имел более старую версию .NET.

в моем случае это было неправильное содержимое файла. DLL был загружен из интернета, но содержание DLL было HTML page :D
Попробуйте проверить, если это двоичный файл, если это кажется правильным DLL :)

основываясь на ответе @paibamboo

Он сказал: перейдите в раздел: Инструменты > Параметры > проекты и решения > веб-проекты > используйте 64-разрядную версию IIS Express

мой коллега поставил этот флажок (он явно искал его), но имел сообщение об ошибке в вопросе. Через несколько часов он снял флажок и проверил его снова. И вот: код теперь работал с успехом.

кажется, что есть два места, где сохранено состояние этого ящика, которое стал не синхронизирован. ООН — и перепроверки он синхронизируется это снова.

вопрос для более знающих пользователей: было ли обновление или что-то на прошлой неделе (для VS 2015), которое де-синхронизировало состояния?

«Была сделана попытка загрузить программу, имеющую неверный формат», даже если платформы одинаковые

Я вызываю функции из 32-разрядной неуправляемой DLL в 64-разрядной системе. Что я получаю:

BadImageFormatException: была предпринята попытка загрузить программу с неправильным форматом. (Исключение из HRESULT: 0x8007000B)

сначала у меня были мои проекты, установленные на любую платформу CPU, поэтому я изменил их на x86, но эта ошибка все еще происходит. Это единственное решение, которое я знаю.

библиотеки DLL не повреждены или что-то еще, потому что я могу использовать их с другими программами (у меня нет источника). Я думал, что, возможно, это не было нахождение зависимости, но я проверил, и все они там. Кроме того, разве это не бросит DllNotFoundException в этом случае?

что еще я могу сделать? И прежде чем вы скажете: «вместо этого используйте 64-разрядную неуправляемую DLL», позвольте мне указать, что ее нет. ;)

15 ответов


Если вы попытаетесь запустить 32-разрядные приложения на IIS 7 (и/или 64-разрядной ОС), вы получите ту же ошибку. Итак, из IIS 7 щелкните правой кнопкой мыши пул приложений и перейдите в раздел» Дополнительные настройки «и измените» включить 32-разрядные приложения «на»TRUE».

перезагрузите ваш сайт и он должен работать.

enter image description here


Почему-то Build флажок в Configuration Manager был снят для моего исполняемого файла, поэтому он все еще работал со старой сборкой процессора. После того, как я исправил это, Visual Studio пожаловалась, что не может отладить сборку, но это было исправлено с перезапуском.


на Visual Studio, щелкните правой кнопкой мыши проект — > на левой панели нажмите кнопку Build tab,

Project properties, build tab

под Целевой Платформы выберите x86 (или, как правило,архитектура в матче с библиотекой, на которую вы ссылаетесь)

Project properties, platform target

надеюсь, это кому-то поможет! :)

60

автор: Marvin Thobejane


У меня тоже была эта проблема. Пробовал все предложения здесь, но они не помогли.

Я нашел еще одну вещь, чтобы проверить, что установил его для меня. В Visual Studio щелкните правой кнопкой мыши проект и откройте «Свойства». Перейдите на вкладку «компиляция», а затем нажмите» Дополнительные параметры компиляции » внизу.

Проверьте раскрывающийся список «целевой процессор». Он должен соответствовать» платформе», которую вы строите. То есть, если вы создаете «любой процессор», то «целевой процессор» должен сказать » любой ЦПУ.» Пройдите через все ваши платформы, сделав их активными и проверьте эту настройку.


Если вы столкнулись с этой ошибкой при нажатии зеленой кнопки со стрелкой для запуска приложения, но все еще хотите запустить приложение в 64 бит. Вы можете сделать это в VS 2013 или 2015

перейти к: Инструменты > Параметры > проекты и решения > веб-проекты > использовать 64-разрядную версию IIS Express


Если вы используете любой CPU, вы можете столкнуться с этой проблемой, если предпочитают 32-бит проверил:

убедитесь, что вы убрать эта опция в свойстве проекта Build tab!

enter image description here


немного не по теме для этого сообщения, но поиск этого сообщения об ошибке привел меня сюда.

Если вы строите через team system и получаете эту ошибку, вкладка процесс определения сборки имеет параметр «MSBuild Platform». Если установлено значение «Auto», может возникнуть эта проблема. Изменение его на » X86 » также может устранить ошибку.


в моем случае я использовал собственную DLL в C#. Эта DLL зависела от нескольких других DLL, которые отсутствовали. Как только эти другие DLL были добавлены, все сработало.


см. Также ответ, которые решали ту же проблему для меня.

опубликовано Luis Mack на 5/12/2010 в 8: 50 AM я нашел ту же проблему, только для конкретного проекта при компиляции на 64-битной машине. Исправление, которое, похоже, работает, — вручную изменять один символ в потоке изображений каждый раз, когда usercontrol или форма редактируются в конструкторе

 AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w

заменить на

 AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj0yLjAuMC4w

это 00LjAuMC4w на 0yLjAuMC4w в конце строки (00 назад к 0y)


в моем случае, я использую крошечный .exe, который перезагружает указанные библиотеки DLL через отражение. Поэтому я просто делаю эти шаги, которые спасают мой день:

из свойств проекта в обозревателе решений на вкладке сборка я выбираю целевой platfrom x86


в моем случае я запускал тесты через MSTest и узнал, что я развертываю как 32-разрядную, так и 64-разрядную DLL в тестовый каталог. Программа благоприятствовала 64-битной DLL и вызывала ее сбой.

TL; DR убедитесь, что вы развертываете только 32-разрядные библиотеки DLL для тестов.


Я решил эту проблему в «Windows». Проверив все настройки, очистив решение и восстановив его, я просто закрываю решение и снова открываю его. Тогда это сработало, поэтому VS, вероятно, не избавился от некоторых вещей во время уборки.
Когда логические решения не работают, я обычно обращаюсь к нелогичным (или кажущимся нелогичными). Окна меня не подводят. :)


Я смог исправить эту проблему, сопоставив мою версию сборки с версией .NET на сервере.

Я дважды щелкнул .exe просто посмотреть, что произойдет, и он сказал мне установить 4.5….

поэтому я понизился до 4.0, и это сработало!

поэтому убедитесь, что ваши версии совпадают. Он работал на моем dev box отлично, но сервер имел более старую версию .NET.


в моем случае это было неправильное содержимое файла. DLL была загружена из интернета, но содержимое DLL было HTML-страницей: D
Попробуйте проверить, если это двоичный файл, если это кажется правильным DLL:)


основываясь на ответе @paibamboo

Он сказал: перейдите к: Инструменты > Параметры > проекты и решения > веб-проекты > использовать 64-разрядную версию IIS Express

мой коллега установил этот флажок (он явно искал его), но имел сообщение об ошибке в вопросе. Через несколько часов он снял флажок и проверил его снова. О чудо: код теперь работал успешно.

кажется, что есть два места, где сохранено состояние этого окна, которое вышел из синхронизации. Un-и перепроверка снова синхронизировала его.

вопрос для более знающих пользователей: было ли обновление или что-то на прошлой неделе (для VS 2015), которое де-синхронизировало Штаты?


Добрый вечер. Есть задача передать данные из c# в c++. Смотрю в сторону DLL. Но офф.доки не особо понятны. Используя VS 2019. Создаю dll c именем Dll2, там есть два определенных файла DLL2.h и DLL2.cpp.Есть два вопроса. Первый, правильно ли я понимаю, что в файле заголовка я должен написать имена используемых далее методов таким образом:

#ifdef DLL2_EXPORTS
#define DLL2_API __declspec(dllexport)
#else
#define DLL2_API __declspec(dllimport)
#endif
...
extern "C" DLL2_API int Summ(int first, int second);
...

Затем, в файле Dll2.cpp я должен описать данный метод:

#include "pch.h"
#include "framework.h"
#include "Dll2.h"
...
DLL2_API int Summ(int first, int second)
{
return first + second;
}

затем я это все собираю. И второй вопрос как мне правильно подключить Dll к коду c#. Я должен использовать данный код?

[DLLImport("path_to_DLL")]
public static extern void Summ(int first, int second);
static void Main()
{
Console.WriteLn(Summ(2,3));
}

Не судите строго за ошибки. Только начал изучать c++. Заранее благодарен.

For CI/CD, MSBuild, DevEnv

Your build-machine log shows — MSB3270 … MSIL vs AMD64.

warning MSB3270: There was a mismatch between the processor architecture of the project
  being built "MSIL" and the processor architecture of the reference
  "C:build-machinemy-solutionMy-1binReleaseMy-1.dll", "AMD64".
This mismatch may cause runtime failures.
Please consider changing the targeted processor architecture of your project through
  the Configuration Manager so as to align the processor architectures between your
  project and references, or take a dependency on references with a processor architecture
  that matches the targeted processor architecture of your project. [C:build-machinemy-solutionMy-2.csproj]

You have Enable 32-Bit Applications value set to True in your site’s IIS App-pool advanced settings.

You site shows the following error after a deployment

An attempt was made to load a program with an incorrect format ... 
... BadImageFormatException

You can fix it by setting Enable 32-Bit Applications to False, but you have to use 32-Bit mode.

Steps to check and fix

Something from the following steps definitely helped me.

*. Open your Visual Studio solution folder in VSCode and search for something like this

<Target Name="AfterBuild">
    <MSBuild Condition=" '$(Platform)' == 'x86' " Projects="$(MSBuildProjectFile)"
        Properties="Platform=x64;PlatFormTarget=x64" RunEachTargetSeparately="true" />
</Target>

Consider to delete it from your project files (.csproj)

*. Open your solution in VS and open Configuration Manager.
Consider to delete x64 platform from all solution configurations.

*. For those who have multiple build steps to build project by project.
Consider to change build older to run Any Cpu (MSIL), x86 projects before x64 projects. Or configure separation of project’s Output path for different platforms.
Be careful during creation of deployment packages. Consider to accumulate different build outputs between project build runs.

*. Consider to clean out all x64 stuff from your project files for projects that should have x64 platform. It is something like this

<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x64'">
    ....
</PropertyGroup>

Для того, чтобы отловить ошибку, Вам необходимо отловить исключение на этапе его появления. Для этого в VisualStudio Вам необходимо нажать комбинацию клавиш:

Ctrl + Alt + E

Затем, в появившемся окне поставить галочку на строке Common Language Runtime Exceptions, хотя, на всех чек-боксах поставьте галочку, возможно не только ее нужно поставить, насколько я помню, вот тут:

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

После этого Вы сможете заглянуть в Inner Exception и сможете отловить ошибку.

Была сделана попытка загрузить программу, имеющую неверный формат.

Вот тут вроде бы проясняется суть проблемы. Проблема в том, что какая-то библиотека отказывается работать под х64, так она 32-битной сборки. Думаю, что все же проблема в настройках сборки. Идем в Configuration Manager:

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

Заходим внутрь и что делаем, видим (это к примеру):

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

И делаем для Release такие же настройки сборки в проектах и решении.

А еще идем сюда:

Project Properties —> Build —> Platform Target

И смотрим, что у нас в Debug и в Release, ищем отличия и исправляем. Думаю x86 должно решить проблему.


Решение проблемы оказалось тривиальным. Как выяснилось, причиной того, что сборка не проходила было то, что были библиотеки, скомпилированные под 64 и 32-битные разрядности. Что потребовалось сделать, чтобы построение проекта заработало: очистить решение, восстановить NuGet-пакеты (так как у меня их не было), в настройках постройки решения и в Debug и в Release необходимо было поставить Any CPU. Переоткрыть VisualStudio (для автора вопроса). После чего постройка проекта заработала в обеих конфигурациях.

  • Ошибка feffe3 мерседес актрос
  • Ошибка fee на фотоаппарате nikon
  • Ошибка filelist xml txt far cry 4
  • Ошибка file windows system32 boot winload efi
  • Ошибка file synsoacc dll could not be located in the windows system folders