development

파일 또는 어셈블리를로드 할 수 없습니다 ... 형식이 잘못된 프로그램을로드하려고했습니다 (System.BadImageFormatException).

big-blog 2020. 2. 27. 22:21
반응형

파일 또는 어셈블리를로드 할 수 없습니다 ... 형식이 잘못된 프로그램을로드하려고했습니다 (System.BadImageFormatException).


나는 두 개의 프로젝트를 가지고 ProjectAProjectB. ProjectB에 의존하는 콘솔 응용 프로그램입니다 ProjectA. 어제 모든 것이 잘 작동했지만 갑자기 오늘 달릴 때 나는 ProjectB이것을 얻습니다.

BadImageFormatException이 처리되지 않았습니다 .
파일 또는 어셈블리 'ProjectA, Version = 1.0.0.0, Culture = neutral, PublicKeyToken = null'또는 해당 종속성 중 하나를로드 할 수 없습니다. 형식이 잘못된 프로그램을로드하려고했습니다.

둘 다 일반 프로젝트이며 다른 비 .Net 프로젝트에 대한 종속성이 없습니다. 둘 다 완전히 .Net입니다. 기본 코드와 P / Invoke가 없습니다. 의존 ProjectA하고 여전히 잘 작동 하는 다른 프로젝트가 있습니다.

내가 시도한 것 :

  • 빌드 체크 박스를 체크 한 상태에서 두 프로젝트 모두 "Any CPU"로 설정되어 있는지 확인하십시오 . 그들은.
  • 두 프로젝트가 동일한 대상 프레임 워크 (.Net 4.0 클라이언트 프로파일)에 맞는지 확인하십시오 .
  • ProjectB에서 -> 참고 문헌 -> PROJECTA는 -> 속성이 있는지 확인 "로컬 복사가" 로 설정 "참" _ (나는 ProjectA.dll가 제대로 복사되는 것을 확인)
  • 솔루션을 청소 / 재 구축하십시오. 두 프로젝트에서 / bin 및 / obj 폴더를 수동으로 삭제하려고했습니다.
  • Visual Studio를 다시 시작하십시오. 컴퓨터를 다시 시작하십시오.
  • 완전히 새로운 저장소 사본을 확인하십시오.

그러나 여전히 같은 오류가 발생합니다. 이 문제의 원인과 해결 방법을 모릅니다. 어떤 아이디어?


32 비트 / 64 비트 충돌이 있다고 확신합니다. 참조하는 클래스가 64 비트로 설정된 동안 기본 프로젝트가 32 비트로 설정되어있는 것 같습니다. 이 SO 질문이것도 살펴보십시오 . 둘 사이에서 문제를 파악할 수 있어야합니다.


서버에 배포 한 후 웹 사이트에 문제가있을 수 있습니다.

그런 다음 32 비트 응용 프로그램 사용으로 응용 프로그램 풀을 조정해야합니다.

단계 :

  1. IIS 관리자 열기
  2. 응용 프로그램 풀을 클릭하십시오
  3. 사용중인 응용 프로그램 풀을 선택하십시오.
  4. 오른쪽 분할 창에서 고급 설정 ...을 클릭하십시오.
  5. 32 비트 응용 프로그램 사용을 True로 설정

여기에 이미지 설명을 입력하십시오


방금 Visual Studio 2015에서 IIS Express를 실행하는이 오류 메시지가 나타났습니다. 제 경우에는 64 비트 버전의 IIS Express를 실행해야했습니다.

도구-> 옵션-> 프로젝트 및 솔루션-> 웹 프로젝트
"웹 사이트 및 프로젝트에 IIS Express의 64 비트 버전 사용"상자를 선택하십시오.

스크린 샷 :

웹 프로젝트에 대한 VS 옵션의 스크린 샷.


나는이 같은 문제가 있었다. 프로젝트 A의 "플랫폼 대상"( "프로젝트 A"(> 오른쪽 클릭)-> 속성-> 빌드-> "플랫폼 대상")을 x86으로 설정했지만 프로젝트 B를 "모든 CPU"로 유지했습니다. 프로젝트 B를 "x86"으로 설정하면이 문제가 해결되었습니다.


Visual Studio 2015에서 단위 테스트 (xunit)를 실행하는 동안이 문제가 발생하여 다음 수정 사항을 발견했습니다.

Menu Bar -> Test -> Test Settings -> Default Processor Architecture -> X64

프로젝트에 32 비트 dll \ exe가 1 개 이상 있으면 IIS7 에서 Appication Pool 설정 "32bit Applications 사용"을 TRUE 로 변경해야 할 수도 있습니다 .


우선 VS2017에서 오래된 프로젝트 로이 작업을 수행하여 모든 프로젝트를 약간 변경하고 프레임 워크 4.7로 업그레이드했습니다.


다른 사람들이 선택 Any CPU하면이 문제를 해결할 수 있다고 언급 했습니다.

필요한 몇 곳이 있으며 드롭 다운에서 선택하는 것만 큼 간단하지 않을 수 있습니다. 이것은 나를 위해 그것을 고쳤다 :

1) 여기서 두 가지를 모두 수행해야합니다.

여기에 이미지 설명을 입력하십시오

2) 또한 Configuration Manager(솔루션을 마우스 오른쪽 버튼으로 클릭하십시오)

여기에 이미지 설명을 입력하십시오

그러나 그것이 없다면 어떻게 될까요 ???

그런 다음을 클릭 New하고 다음 설정을 선택 하십시오 . ( thanks @RckLN )

여기에 이미지 설명을 입력하십시오


동일한 솔루션의 여러 프로젝트에서 동일한 문제가 발생하여 대상 CPU에 대해 모든 대상 프레임 워크를 .NET Framework 4 및 x86으로 설정하고 마침내 성공적으로 컴파일되었습니다.


VS에서 MSI 설치 관리자를 사용하여 64 비트 프로젝트를 패키지하려는 경우에도이 문제가 표시 될 수 있습니다. "이 이유는 .msi 파일과 함께 패키지 된 기본 shim이 32 비트 실행 파일이기 때문입니다."

자세한 내용은 여기를 참조하십시오 : http://blogs.msdn.com/b/heaths/archive/2006/02/01/64-bit-managed-custom-actions-with-visual-studio.aspx


이 솔루션들 중 어느 것도 나를 위해 일하지 않았습니다. 그러나 bin 및 obj 폴더의 내용을 삭제하면 모든 것이 다시 멋졌습니다.


Visual Studio BuildSteps를 사용하여 Visual Studio Online (VSTS) 빌드를 통해 프로젝트를 빌드 할 때 이것을 얻었습니다 .

해결책은 다음과 같습니다.

  • 기존 소스 폴더 삭제
  • 종속성을 포함하여 모든 Visual Studio 빌드에 대해 플랫폼에서 '모든 CPU'를 명시 적으로 설정하십시오 (아래 스크린 샷 참조).
  • 빌드를 다시 실행

VSO 스크린 샷


같은 문제가 발생했습니다. 그것은 파란색에서 튀어 나와서 저에게는 이상해 보였습니다.

예외 스냅 샷에서 FusionLog의 메시지에서 다음을 확인했습니다.

... C : \ Windows \ Microsoft.NET \ Framework64 ...

퓨전 로그에 대한 자세한 내용 : http://msdn.microsoft.com/en-us/library/e74a18c4(v=vs.110).aspx

모든 프로젝트에는 AnyCPU의 대상 CPU가있었습니다. 응용 프로그램 프로젝트 (다른 ​​모든 프로젝트를 참조하는 프로젝트)를 대상 CPU x86으로 변경했습니다. 이제 작동합니다.

명백한 이유없이 대상 CPU 믹스가 어떻게 발생했는지 확실하지 않지만 실제로 발생했습니다.


I also face this problem in a project, after a few minutes i found the solution, this problem is due to CPU configuration, If you are using Visual Studio 2010 or VS 2013, just goto project 's properties and then select Compile from side bar and there will be 5 drop-down, 5th Drop-down will be Target CPU:, you should set it to x86 or x64 according to your requirements instead of Any CPU.

My problem was solved after changing it to x86.


This also can happen just by having multiple supported frameworks defined in the app.config file and, forcing the app to run in a different .NET framework other than the one mentioned first in the app.config file.

And also this fires when you have both of the mentioned frameworks available in your system.

As a workaround, bring up the target framework you are going to use for the debugging up in the app.config

ex: if you trying to run in .NET 4, config file should have something similar to this,

<supportedRuntime version="v4.0"/>
<supportedRuntime version="v2.0.50727"/>

In my project for C#, project property->[Build]->Platform target: Any CPU, and uncheck the Prefer 32-bit to let compiler to choose automatically.


The Chilkat .NET 4.5 assembly requires the VC++ 2012 or 2013 runtime to be installed on any computer where your application runs. Most computers will already have it installed. Your development computer will have it because Visual Studio has been installed. However, if deploying to a computer where the required VC++ runtime is not available, the above error will occur:

Install all of the bellow packages

Visual C++ Redistributable Packages for Visual Studio 2013 - vcredist_x64

Visual C++ Redistributable Packages for Visual Studio 2013 - vcredist_x86

Visual C++ Redistributable Packages for Visual Studio 2012 - vcredist_x64

Visual C++ Redistributable Packages for Visual Studio 2012 - vcredist_x86


If you use LibreOffice from your program via cli .net integration like me, I got the same error. I use the older version of LibreOffice on the production environment on my PC I installed a newer version that was in conflict. Just uninstall LibreOffice. I found the solution here .NET CLI: Could not load file or assembly 'cli_cppuhelper'


It can be a little funny, but I had the same problem with normal working code. I added StreamWriter and StreamReader and it gave that error. The solution was I took that code into comment brackets then did debug and it started to work again


I also had this problem running unit tests by using ReSharper on Visual Studio 2017 and fixed it with following config:

여기에 이미지 설명을 입력하십시오

Also you can change the ReSharper's run test setting: https://resharper-support.jetbrains.com/hc/en-us/articles/207242715-How-to-run-MSTest-tests-using-x64-configuration


In my case a dependency was missing in the dll that threw this exception. I checked with Dependency Walker, added the missing dll and the problem was resolved.

More specifically, I somehow corrupted my opencv_core340.dll by accidentally adding SVN keywords to it, and thus my dll could no longer use it. However I don't believe that the solution to this problem depends on whether the dll is corrupted or missing. I'm just adding this for the sake of giving complete information.


Shoot! I knew about this problem. I thought I was doing everything right until I accidentally saw 'x86' in the VS output window and that's when I got hold of the cause. Wasted a few mins on it today.

The configuration under 'Publish' window was set to 'x86'; whereas, everywhere else, it was 'x64'.

Please make sure it's in-sync across configuration manager, publish settings, solution configurations, and IIS settings (if that's your web server).

또한 VS는 32 비트 앱이고 IIS는 64 비트입니다. 32 비트 앱은 IIS에서 기본적으로 비활성화되어 있습니다.

여기에 이미지 설명을 입력하십시오


내 컴퓨터는 BIOS 업데이트를 보여 주었고 이것이 갑자기이 오류가 발생하는 것과 관련이 있는지 궁금했습니다. 그리고 업데이트를 수행 한 후에 오류가 해결되고 솔루션이 제대로 작성되었습니다.


cmd에서 .exe 파일을 실행하려고합니까? 이것은 나의 실수였다. .exe 파일을 두 번 클릭하여 실행하십시오. Windows 8.1 / Windows Server 2012 R2 x64 용 .NET Core SCD 인 경우

참고 URL : https://stackoverflow.com/questions/11370344/could-not-load-file-or-assembly-an-attempt-was-made-to-load-a-program-with-a



반응형