본문 바로가기
Work/개발 노트

[오류 해결] 종속되어 있는 파일이나 어셈블리 중 하나를 로드할 수 없습니다

by ★용호★ 2015. 10. 9.

 회사에서 툴 작업을 하면서 기존에 사용되고 있던 dll을 가져다 쓰게 됐었다. 그런데 dll을 사용하는 함수를 호출할 떄 오류가 발생해서 하루 종일 헤맸었다. 내부 디버깅을 해볼 수 도 없어서 오류 내용만으로 찾으려니 엄청 삽질을 해야했다. 


오류 내용

파일이나 어셈블리 'dll명, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' 또는 여기에 종속되어 있는 파일이나 어셈블리 중 하나를 로드할 수 없습니다. 지정된 파일을 찾을 수 없습니다.

=== 미리 바인딩된 상태 정보 ===

로그: 사용자 = yongho

로그: DisplayName = dll명, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null

 (Fully-specified)

로그: Appbase = file:///프로젝트경로/bin/Debug/

로그: 초기 PrivatePath = NULL

호출 어셈블리: d169542d-119b-46e0-b600-32e2c752997c, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null.

===

로그: 이 바인딩은 LoadFrom 로드 컨텍스트에서 시작됩니다.

경고: LoadFrom 컨텍스트에서는 네이티브 이미지를 검색하지 않습니다. 네이티브 이미지는 Assembly.Load()처럼 기본 로드 컨텍스트에서만 검색됩니다.

로그: 응용 프로그램 구성 파일 프로젝트경로\bin\Debug\실행파일명.exe.config을(를) 사용합니다.

로그: C:\Windows\Microsoft.NET\Framework64\v2.0.50727\config\machine.config에서 컴퓨터 구성 파일을 사용합니다.

로그: 참조에 정책이 지금 적용되지 않습니다(전용, 사용자 지정, 부분, 위치 기반 어셈블리 바인딩).

로그: 동일한 바인딩이 이미 있어 hr = 0x80070002과(와) 함께 오류가 발생했습니다.


 뭔가 dll을 잘못 쓰고 있다는건 느꼈지만 이걸 어떻게 해결해야되는지 알 수가 없었다. 그래서 열심히 구글링도 하고 이것저것 적용도 다 해보고 잘 돌아가는 프로그램과 하나하나 비교해가며 찾아봤지만 코드상에 문제는 없었다. 



해결


 구글링을 계속하다보니 dll의 버젼이나 플랫폼이 맞지 않아서 발생할 수 있다는 문구를 보고 좀 더 꼼꼼히 살펴보니.. 활성화된 플랫폼 아래 세부적으로 또 설정하는 부분이 있었다.




 나는 구성 옆에 있는 플랫폼만 보고서 동일 한데 왜 안되지 했었는데.. 아래 플랫폼 대상이 내 프로젝트는 Any CPU로 되어 있고, dll을 생성하는 프로젝트는 x86으로 되어 있었다. 이 부분을 맞춰주니 바로 해결.. 의심 되는 부분을 좀 더 꼼꼼히 볼껄 그랬다.

댓글