2015-11-02 25 views
-1

我正試圖製作一個程序來打開新的Outlook 2013消息。 我已經引用了Microsoft.Office.Interop.Outlook 15.0.0.0。發佈模式下的Outlook互操作異常(E_NOINTERFACE)

在調試模式下運行一切工作正常,但在發行模式與異常崩潰:

Unable to cast COM object of type 'Microsoft.Office.Interop.Outlook.ApplicationClass' to interface type 'Microsoft.Office.Interop.Outlook._Application'. This operation failed because the QueryInterface call on the COM component for the interface with IID '{00063001-0000-0000-C000-000000000046}' failed due to the following error: No such interface supported (Exception from HRESULT: 0x80004002 (E_NOINTERFACE)).

代碼:

var _Outlook = new MSOutlook.Application(); 
var _MailItem = _Outlook.CreateItem(MSOutlook.OlItemType.olMailItem) as MSOutlook.MailItem; 
var _Recip = _MailItem.Recipients.Add("[email protected]"); 
Recip.Type = (int)MSOutlook.OlMailRecipientType.olTo; 

_MailItem.Recipients.ResolveAll(); 
_MailItem.Subject = "xxx"; 

_MailItem.Display(false); 

其中MSOutlook = Microsoft.Office.Interop.Outlook命名空間。

我正在使用.NET Framework 4.5和Outlook 2013.

Release模式對此有何影響?奇怪的調試模式工作正常..

我將不勝感激任何想法如何解決它。謝謝!

回答

0

我通過啓用解決了這個問題,「首選32位」在項目設置 - >生成 - >常規。

這或許也可以解決通過動態運行時的受助對象:

var _Recip = ((dynamic)_MailItem.Recipients).Add("[email protected]"); 
-2

您何時何地嘗試運行代碼?您是否有機會查看正在運行的進程列表?它是否包含OUtlook.exe條目?

嘗試使用反射來創建新的應用程序實例:

Activator.CreateInstance(Type.GetTypeFromProgID("Outlook.Application")); 
+0

我已經嘗試過的那一個,但可惜的是沒有sucess :( – dontbyteme

0

嘗試顯式聲明_Outlook變量類型:

MSOutlook.Application _Outlook = new MSOutlook.Application(); 
+0

相同的異常像以前..好像有東西與64位做,因爲「首選32位」解決了這個問題 - http://i.imgur.com/yQXmDua.png – dontbyteme

相關問題