2015-11-02 26 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

相关问题