COM DLL(regsvr32)を登録せずにメール機能を使用したいと考えています。 Iからの情報に従った:私はEVAL-ポップアップを示しOutlook Redemption - DLLをregsvr32なしでRedemptionLoaderを使用する
private Redemption.SafeMailItem safeMail = Redemption.RedemptionLoader.new_SafeMailItem();
とDLLを初期化
http://www.dimastr.com/redemption/security.htm#redemptionloader
。すべての良い。 しかし、私は、オブジェクト
safeMail.Item = mail; // of type Microsoft.Office.Interop.Outlook.MailItem
にOutlookメールアイテムを割り当てるときに、この例外が表示されます:
Unable to cast COM object of type 'System.__ComObject' to interface type 'Redemption.ISafeMailItem'. This operation failed because the QueryInterface call on the COM component for the interface with IID '{0A95BE2D-1543-46BE-AD6D-18653034BF87}' failed due to the following error: No such interface supported (Exception from HRESULT: 0x80004002 (E_NOINTERFACE)).
それが動作します。regsvr32でDLLを登録した後?しかし、私はそれを望んでいません。
何が間違っていますか?
EDIT:
- 私はCOMを削除し、それが意図したものInterop.Redemption.dll
を使用するのdevのマシン
refを参照してください。https://stackoverflow.com/a/20827140/1498669 – Bernhard
があります複数のスレッドを使用していますか?レジストリにタイプ情報が見つからない場合、.NET実行時にマーシャリングの問題が発生します。 –