我试图创建一个可以打开新的Outlook 2013消息的程序。 我引用了Microsoft.Office.Interop.Outlook 15.0.0.0。
在调试模式下运行时,一切正常但在发布模式下崩溃并带有异常:
无法转换类型的COM对象 ' Microsoft.Office.Interop.Outlook.ApplicationClass'到界面类型 ' Microsoft.Office.Interop.Outlook._Application&#39 ;.此操作失败 因为QueryInterface调用COM组件的接口 与IID' {00063001-0000-0000-C000-000000000046}'由于失败而失败 以下错误:不支持此类接口(来自HRESULT的异常: 0x80004002(E_NOINTERFACE))。
代码:
var _Outlook = new MSOutlook.Application();
var _MailItem = _Outlook.CreateItem(MSOutlook.OlItemType.olMailItem) as MSOutlook.MailItem;
var _Recip = _MailItem.Recipients.Add("xxx@yyy.com");
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。
发布模式如何影响这个?奇怪的调试模式工作正常..
我会感激任何想法如何解决它。谢谢!
答案 0 :(得分:0)
尝试显式声明_Outlook变量类型:
MSOutlook.Application _Outlook = new MSOutlook.Application();
答案 1 :(得分:0)
我通过在项目设置中启用“首选32位”来解决此问题 - >构建 - >一般
也许还可以通过动态解析收件人对象:
var _Recip = ((dynamic)_MailItem.Recipients).Add("xxx@yyy.com");
答案 2 :(得分:-2)
您何时何地尝试运行代码?您是否有机会查看正在运行的进程列表?它是否包含OUtlook.exe条目?
尝试使用Reflection创建一个新的Application实例:
Activator.CreateInstance(Type.GetTypeFromProgID("Outlook.Application"));