2013-08-28 51 views
0

我的Outlook加載項在平臺目標版本中被編譯爲「任何CPU」,並且它現在可以在32位和64位Outlook中正常工作。我想在我的加載項中使用redemption.dl l來擴展某些功能。我看到有在下載贖回包(redemption.dllredemption64.dll)的DLL的兩個版本,我想用下面類似的代碼使用DLL在我的外接在32位和64位Outlook版本中使用兌換功能的Outlook加載項

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

在這種情況下該dll的我指的是我的項目? redemption.dllredemption64.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

相關問題