2011-08-03 5 views
0

집안의 ActiveX 브라우저 컨트롤에 대한 작업을 자동화하려고합니다. FileNotFoundException (파일이 있어도 Interop 어셈블리를 사용할 때)

나는 자동적으로 Interop.AssemblyName.dll를 생성하는 내 C# 코드에서 COM 형식에 대한 참조를 추가

내가이 시험했을 때

2 주 전에, 그것은 그러나 지금 같은 코드를 시도, 마법처럼 일했다 interop 어셈블리에서 발견 된 일부 유형에 대한 참조를 가져 오려고 할 때 FileNotFoundException으로 실패합니다.

오류의 원인을 정확히 추적하려면 어떻게해야합니까? 내 테스트 응용 프로그램의 exe 옆에 Interop 파일이 있습니다.

내가 뭘 찾고 있을까요?

이러한 종류의 상호 운용성 및 문제점에 대한 유용한 자습서가 있습니까?

답변

0

잘못된 위치를보고 있습니다 ... 예상 한 위치 이외의 위치입니다. 이 문제를 추적하는 가장 간단한 방법은 Exception의 세부 사항을 보는 것입니다. 그러나 이것이 계시되지 않은 경우 Sysinternals의 Process Monitor를 사용하여 정확히 무슨 일이 일어나는지 추적합니다.

+0

질문은 왜 다른 위치에서 보입니까? –

+0

Dunno ... 코드를 봐야겠다. 그러나 예를 들어 Debug와 Release 빌드 구성간에 변경하면이 문제가 발생할 수 있습니다. –

+0

이것은 여전히 ​​디버그 빌드입니다. 파일은 예상되는 위치에 존재합니다 (ProcMon으로 확인). –

0

WMI 클래스에서이 문제가 발생했습니다.이 문제는 COM 개체에 연결하여 정보를 다시 가져옵니다. WMI는 COM 개체에 대한 Interop 파일을 찾을 수 없다는 이벤트 로그에 기록했습니다.

Chris B Behrens는 다음과 같이 말했습니다. 예외를 생성하는 동안 모든 디스크 IO를 포착하고 찾고있는 위치와 찾을 수없는 interop 파일을 확인합니다.

... 예, 내 interop 파일은 내 응용 프로그램과 함께 사용되지만 시스템이 찾을 때 검색 한 위치 중 하나가 아닙니다. 기괴한.

interop 파일을 C : \ Windows \ System32 \ wbem에 복사했는데 마술처럼 작동하기 시작했습니다 (Windows XP x86).

관련 문제