SQL Server 복제 프로젝트에서 "잘못된 형식의 프로그램을로드하려고했습니다"오류가 발생합니다.


318

정확한 오류는 다음과 같습니다

파일 또는 어셈블리 'Microsoft.SqlServer.Replication, 버전 = 9.0.242.0, Culture = neutral, PublicKeyToken = 89845dcd8080cc91'또는 해당 종속성 중 하나를로드 할 수 없습니다. 형식이 잘못된 프로그램을로드하려고했습니다.

최근 2 개월 동안 다른 프로젝트로 이동 한 후이 프로젝트를 다시 시작했습니다. 이전에는 완벽하게 작동했으며 모든 참조를 두 번 확인했습니다.

답변:


405

아래 의 답변 은 정답이지만 AppPool에서 32 비트 응용 프로그램을 활성화해야 할 수도 있습니다.

출처 : http://www.alexjamesbrown.com/uncategorized/could-not-load-file-or-assembly-chilkatdotnet2-or-one-of-its-dependencies-an-attempt-was-made-to-load- 잘못된 형식의 프로그램

로컬 컴퓨터에서 실행되도록 응용 프로그램을 설정하는 동안 (Vista 64bit 실행)이 오류가 발생했습니다.

파일이나 어셈블리 ChilkatDotNet2또는 해당 종속성 중 하나를 로드 할 수 없습니다 . 형식이 잘못된 프로그램을로드하려고했습니다.

분명히 응용 프로그램은 ChilKat 구성 요소를 사용 하지만 우리가 사용하는 버전은 32 비트 버전 인 것 같습니다.

이 오류를 해결하기 위해 32 비트 응용 프로그램을 허용하도록 IIS에서 응용 프로그램 풀을 설정했습니다. IIS 관리자를 열고 앱 풀을 마우스 오른쪽 버튼으로 클릭 한 다음 고급 설정을 선택하십시오 (아래 참조).

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

그런 다음 "32 비트 응용 프로그램 사용"을 True로 설정하십시오.

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

다 했어요!


이로 인해 전체 응용 프로그램 풀이 전체 64 비트가 아닌 32 비트로 실행됩니까? 64 비트 / 모든 플랫폼에 대한 종속성을 다시 컴파일하는 것이 더 나은 솔루션입니까? NFOP로 인해이 문제가 발생하지만 오픈 소스이므로 다시 컴파일 할 수 있습니다.
jamiebarrow

2
링크가 작동하지 않지만 설명이 내 문제를 해결하기에 충분했습니다. +1
Andrew Shepherd

32 비트 응용 프로그램을 활성화하는 방법에 대한 지침 링크 : blogs.msdn.com/b/rakkimk/archive/2007/11/03/…
Brandon S

15
이 AppPool 솔루션은 ASP.NET 응용 프로그램에만 적용된다는 점에 주목할 필요가 있습니다. ASP.NET 또는 IIS를 사용하거나 구성하지 않은 일부 개발자는 혼동 될 수 있습니다.
galaktor

IIS7.5에서만 IIS7에서 수정하지 않습니다
FlavorScape

120

해결책을 찾았습니다. 최근에 컴퓨터를 Windows 2008 Server 64 비트로 업그레이드했습니다. SqlServer.Replication 네임 스페이스는 32 비트 플랫폼 용으로 작성되었습니다. 다시 실행하려면 프로젝트 빌드 속성에서 대상 플랫폼을 X86으로 설정하기 만하면됩니다.


DLL 에서이 문제가 발생하지만 프로젝트> HDP 속성 ...에 "빌드"탭이 없습니다 (모두 보이지는 않지만 모든 것). 컴파일 및 디버그 탭 모두 "플랫폼"드롭 다운이 있지만 두 경우 모두 드롭 다운의 유일한 항목은 "활성 (모든 CPU)"입니다.
B. Clay Shannon

위의 문제와 반대의 상황이 발생했습니다. 나는 모든 것을 64 비트로 실행했으며 빌드 대상은 Any CPU였습니다. 이것을 64 비트로 변경했을 때 완벽하게 작동했습니다 :)
Madhurya Gandi

87

웹 프로젝트의 속성 페이지에서 플랫폼 대상 값을로 변경하십시오 Any CPU.

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


불행히도 효과가 없습니다.
Jonathan

4
나는 틀렸다-모든 'bin'폴더를 제거한 후에 이것은 효과가 있었다. 감사!
Jonathan

또한 내 문제를 해결했지만 내 솔루션의 모든 프로젝트 에서이 작업을 수행 한 후에 만 ​​가능합니다. 언급 된 단계는 C # 프로젝트를위한 것입니다. VB.NET 프로젝트 "anycpu를 '로 변경 프로젝트 등록 정보> 컴파일> 고급 컴파일 옵션> 대상 CPU의 경우
프랑소와 보타

6
필자의 경우 프로젝트는 이미 "모든 CPU"를 대상으로하고있었습니다. 그러나 64 비트 Windows를 실행하고 있으며 구식 하드웨어 드라이버를 DllImport하려고합니다. 구체적으로 대상을 x86으로 변경하면 문제가 해결되었습니다.
bsegraves

필자의 경우 x64에서 실행하고 싶었습니다. 작동하지 않았습니다. 모든 권장 사항을 변경 한 후 웹에서도 '비트'를 x64로 변경해야했습니다
SKCS Kamal

52

IIS-> 응용 프로그램 풀-> 고급 설정-> 32 비트 응용 프로그램 사용으로 이동하십시오.


Clay, 어떤 IIS 버전을 사용하고 있습니까?
Harpal

23

최근 Visual Studio에서 코드를 실행하려고 할 때 문제가 발생했습니다. 이 경우
도구> 옵션> 프로젝트 및 솔루션> 웹 프로젝트를 수행하고 "웹 사이트 및 프로젝트에 IIS Express의 64 비트 버전 사용"을 확인하십시오.


1
이것이 궁극적으로 나를 위해 일한 것입니다. 특히 Service Fabric 라이브러리로 Web API를 디버깅하려는 사람들에게 적합합니다 !!! 프로젝트에서 Service Fabric DLL을 사용하는 경우 위의 솔루션을 사용하고 있는지 확인하십시오.
Chris Dutra

이것은 나를 위해 일한 유일한 솔루션입니다. 감사. : D
Jeremy Styers 2016 년

나도 일해!
Cù Đức Hiếu

11

Visual Studio 자체 의 ASP.NET MVC 3 프로젝트 에서이 오류가 발생하는 경우 :

작업중인 ASP.NET MVC 3 앱에서 배포 서버에서 누락 된 문제를 해결하기 위해 프로젝트에 Microsoft.SqlServer.BatchParser에 대한 참조를 추가하려고했습니다. (우리의 앱은 SMO를 사용합니다. 올바른 수정은 배포 서버에 SQL Server Native Client와 다른 몇 가지를 설치하는 것이 었습니다.)

BatchParser에 대한 참조를 제거한 후에도 열려있는 모든 ASP.NET MVC 3 페이지에서 BatchParser DLL을 참조하는 "시도했습니다 ..."오류가 계속 발생하여 수십 페이지의 구문 분석이 발생했습니다. 오류.

이런 일이 발생하면 파일 검색을 수행하고 DLL이 여전히 프로젝트의 \ bin 폴더 중 하나에 있는지 확인하십시오. 다시 빌드하더라도 Visual Studio가 모든 \ bin 폴더의 모든 것을 지울 필요는 없습니다. 휴지통에서 DLL을 삭제하고 다시 빌드하면 오류가 사라졌습니다.


방금 다시 빌드하고 DLL을 수동으로 삭제하지 않고도 문제가 해결되었습니다. 감사!
Trevor

4

IIS Express에 대한 Windows 10의 MVC5 앱 에서이 기능을 사용했습니다. 내 해결책은 다음과 같습니다.

  • 도구 =>
    • 옵션 =>
      • 프로젝트 및 솔루션 =>
        • 웹 프로젝트 =>
          • 웹 사이트 및 프로젝트에 64 비트 버전의 IIS Express 사용

3

32 비트 (true)로 변경하십시오.

이 길이를 얻는다면 0보다 작을 수 없습니다. 매개 변수 이름 : IIS 서버 구성의 길이 문제는 SQL 서버 이름 및 서버 이름과 같이 web.config 파일에서 연결 문자열을 변경하고 IIS를 다시 시작한 다음 작동하는 페이지를로드하려고합니다.


2

오류 발생시 Visual Studio 2012 에서 게시하는 경우 게시 마법사에서 "게시하는 동안 컴파일" 옵션을 선택 취소 하십시오.

"게시 중 사전 컴파일"을 선택 취소하십시오.


0

Windows 양식 응용 프로그램 에서이 작업을 수행하려면 프로젝트-> 속성-> 빌드-> 32 비트 선호 확인 확인란을 마우스 오른쪽 버튼으로 클릭하십시오. 모두 감사합니다


0
  1. C : \ Users (User) \ AppData \ Local \ Temp \ VisualStudioTestExplorerExtensions \에있는 임시 테스트 디렉토리를 삭제하십시오.

  2. Visual Studio에서 모든 프로젝트를 x64로 설정

  3. 기본 프로세서 아키텍처를 x64 (Test / TestSettings / Default Processor Architecture)로 설정하십시오.

솔루션 파일을 깨끗하게 빌드하십시오.


0

.NET Framework 4.7.1에서 4.6.2로 프로젝트 속성의 Target Framework를 변경하면 효과가 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.