Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/301.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 发布模式下的Outlook互操作异常(E_NOINTERFACE)_C#_Com_Outlook_Office Interop_Com Interop - Fatal编程技术网

C# 发布模式下的Outlook互操作异常(E_NOINTERFACE)

C# 发布模式下的Outlook互操作异常(E_NOINTERFACE),c#,com,outlook,office-interop,com-interop,C#,Com,Outlook,Office Interop,Com Interop,我正在尝试制作一个可以打开新Outlook 2013邮件的程序。 我引用了Microsoft.Office.Interop.Outlook 15.0.0.0 在调试模式下运行时,一切正常,但在发布模式下崩溃,例外情况如下: 无法强制转换类型为的COM对象 将“Microsoft.Office.Interop.Outlook.ApplicationClass”更改为接口类型 “Microsoft.Office.Interop.Outlook.\u应用程序”。此操作失败 因为接口的COM组件上的Qu

我正在尝试制作一个可以打开新Outlook 2013邮件的程序。 我引用了Microsoft.Office.Interop.Outlook 15.0.0.0

在调试模式下运行时,一切正常,但在发布模式下崩溃,例外情况如下:

无法强制转换类型为的COM对象 将“Microsoft.Office.Interop.Outlook.ApplicationClass”更改为接口类型 “Microsoft.Office.Interop.Outlook.\u应用程序”。此操作失败 因为接口的COM组件上的QueryInterface调用 由于以下原因,IID“{00063001-0000-0000-C000-0000000000 46}”失败 以下错误:不支持此类接口(HRESULT的异常: 0x80004002(E_NOINTERFACE))

代码:

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

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

释放模式如何影响这一点?奇怪的是,调试模式工作正常


如果有任何解决办法,我将不胜感激。谢谢

您在何时何地尝试运行代码?您是否有机会查看正在运行的进程列表?它是否包含OUtlook.exe条目

尝试使用反射创建新的应用程序实例:

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

尝试显式声明_Outlook变量类型:

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

我通过在项目设置->构建->常规中启用“首选32位”解决了这个问题

也可以在运行时通过动态解析recipients对象:

var _Recip = ((dynamic)_MailItem.Recipients).Add("xxx@yyy.com");

和以前一样的例外。。似乎它与64位有关,因为“更喜欢32位”解决了这个问题-
var _Recip = ((dynamic)_MailItem.Recipients).Add("xxx@yyy.com");