2013-08-28 1 views
0

내 Outlook 추가 기능은 "모든 CPU"로 플랫폼 대상으로 컴파일되며 32 및 64 비트 Outlook에서 제대로 작동합니다.32 비트 및 64 비트 Outlook 버전에서 보너스를 사용하는 Outlook 추가 기능

일부 기능을 확장하려면 내 추가 기능에 redemption.dl l을 사용하고 싶습니다. 나는 다운로드 구속 패키지 (redemption.dllredemption64.dll)에서 DLL의 두 가지 버전이 난을 참조 dll을이 경우

Type t = Type.GetTypeFromProgID("MyDll.MyMailItem"); 
SafeMailItem sItem = (SafeMailItem) Activator.CreateInstance(t); 

에 추가 내에서 DLL을 사용하는 다음과 같은 코드를 사용하려면 거기에 본 내 계획? redemption.dll 또는 redemption64.dll?

내 프로젝트가 32 비트 Office 및 64 비트 Office에서 올바른 DLL을로드하는 방법은 무엇입니까?

답변

1

올바른 DLL은 코드가 아니라 COM 시스템에 의해로드됩니다.

두 버전이 모두 올바르게 설치되고 레지스트리에 등록되어 있으면 수정없이 코드가 작동합니다. 그러나 32 비트 시스템에 64 비트 버전의 dll을 설치할 수는 없습니다.

RedemptionLoader을 사용하면 COM 등록을 완전히 건너 뛸 수 있으며 RedemptionLoader는 프로세스 비트를 기준으로 올바른 dll을로드합니다.

+0

감사합니다. 내 문제가 해결되었습니다. 나는 하나 더 질문한다. redemption.dll의 이름을 MyRedemption.dll로 변경하면 여전히 Redemption.SafeMailItem을 사용할 수 있습니까? objSafeItem = new Redemption.SafeMailItem() 또는 Type t = Type.GetTypeFromProgID ("MyRedemption.SafeMailItem")? 어떤 C# 코드 샘플도 사용할 수 있습니까? – user1971706

+0

두 가지 방법으로 작동합니다. 즉, 컴파일러에서 COM 개체의 CLSID를 하드 코드하고 dll의 이름을 변경해도 변경되지 않습니다. 후자의 경우 클래스 이름에서 동적으로 CLSID를 검색하지만 최종 결과는 동일합니다. RedemptionLoader는 훨씬 더 좋은 옵션입니다. –

+0

RedemptionLoader 문제가 있습니다. https://stackoverflow.com/questions/47810856 – Bernhard

관련 문제