2010-06-30 2 views
1

COM Interop을 통해 VB6 실행 파일에서 사용되는 어셈블리가 하나 있습니다. 이 어셈블리는 다른 .NET 어셈블리를 사용합니다 (COM에서는 사용할 수 없음). 등록없이 .NET 어셈블리를 사용할 수 있도록 VB6 응용 프로그램의 .manifest를 정의했습니다. 또한 프로빙 설정을 사용하여 하위 디렉토리 ("bin")에서 어셈블리를 찾는 VB6 응용 프로그램의 .config 파일을 정의했습니다.등록 무료 COM/.NET Interop을 사용한 .NET 어셈블리 검사

지정된 하위 디렉터리 ("bin")에 모든 .NET 어셈블리를 배치하면 응용 프로그램이 성공적으로 시작되고 Interop-Assembly가 다른 어셈블리의 코드를 호출 할 때까지 작업 할 수 있습니다. 그런 다음 런타임 오류 '429'가 발생합니다. ActiveX 구성 요소가 개체를 만들 수 없습니다.

.config 파일을 삭제하고 모든 파일을 같은 디렉터리에 저장하면 응용 프로그램이 예상대로 작동합니다.

VB6 실행 파일에서 사용되는 .NET 어셈블리에 대해 프로빙을 사용할 수 있습니까? 다른 어셈블리가 성공적으로 배치되도록 probing을 설정하는 방법이 있습니까? 당신의 .config 파일이 작동하지 않는 것처럼

의 .config

<configuration> 
    <runtime> 
     <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> 
     <probing privatePath="bin"/> 
     </assemblyBinding> 
    </runtime> 
</configuration> 

답변

1

잘 보인다. VB6 IDE에서 VB6 응용 프로그램을 디버깅하려고하면 CLC가 .config 파일의 잘못된 디렉터리를 찾게 될 수 있습니다. 이 문제를 해결하는 데 필요한 궁극적 인 도구는 fuslogvw.exe이며 CLR이 어셈블리를 찾은 위치를 보여줍니다.

+0

Interop-Assembly가 프로빙을 사용하여 발견되었지만 종속 어셈블리가 해결되지 않았습니다. 나는 fuslogvw.exe를 시도 할 것이다. – Jehof