2009-10-27 3 views
0

에 의해 사이드 나는 다음과 같은 상황에 직면하고있어 관리되지 않는 C++를 사용 내가 COM 서버 (격리) 관리되지 않는 C++를 참조하는 간단한 전체 신뢰 XBAP 응용 프로그램을 만들었습니다.XBAP는 COM 서버 측 배포 문제

배포 후 그 XBAP 응용 프로그램이 같은 디렉토리에 배치됩니다 COM 서버 DLL을 발견 할 것으로 기대하지만, 그렇지 않습니다.

호출 대상이 예외가 throw되었습니다 : 나는 다음과 같은 오류를 받고 있어요. ---> 함께 System.Runtime.InteropServices.COMException (0x80040154) : Generation888.Generation888에서 80040154. : {- A8A8-00105AA943DF이 970599E0-2673-11D3} 다음 오류 때문에 실패 CLSID로 구성 요소의 COM 클래스 팩터 리를 검색. 간단한 (INT32의 NUM1, INT32의 NUM2는)

나는 XBAP 배포 된 폴더가 나는 간단한 C# 윈도우 폼 응용 프로그램을 만든 경우 적절한 CLSID

를 포함하고 같은 참조하는 DLL 및 XBAP 매니페스트가 포함되어 있는지 확인 COM dll, 잘 작동합니다.

내 질문은 XBAP 지원 Side-by-Side 메커니즘입니다. 나는이 너무 XBAP에 몹시 익숙하지 않다

감사

답변

1

은 몇 가지 일반적인 제안 사항입니다. XBAP가 실제로 fulltrust 이후로 별도의 실행 파일로 실행되는 경우 (taskmgr의 설명은 무엇입니까?) Windows Vista 이상의 승격 된 명령 줄에서 "sxstrace.exe"도구를 사용하여 XBAP 매니페스트가 실제로 시스템에 의해 해석됩니다. 매니페스트없이 응용 프로그램을 처음 시도하거나 매니페스트를 변경 한 경우 시스템에서이 이전 정보를 캐시하고 매니페스트와 실행 파일의 타임 스탬프를 모두 터치하여이 매니페스트 상태 캐시를 지울 필요가 있습니다.

그것은 당신의 실행 파일이 외부 매니페스트가 무시되고 있음을 의미 임베디드 매니페스트를 가지고 수도 있습니다. 이를 확인하려면 Visual Studio에서 실행 파일을 열고 ID가 1 인 RT_MANIFEST 리소스가 있는지 확인하십시오.