PK.*_*PK. 8 c# com interop office-interop outlook-2007
我正在尝试制作一个可以打开新的Outlook 2007消息的程序.
我引用了COM选项卡Microsoft Outlook 12.0 ObjectLibrary.
这些项目出现在VS的参考文献中:
Microsoft.Office.Core
Microsoft.Office.Inerop.Outlook
Run Code Online (Sandbox Code Playgroud)
现在我尝试调用以下代码:
var _outlookInstance = new Microsoft.Office.Interop.Outlook.Application();
var _message = (OutlookApp.MailItem)_outlookInstance.CreateItem(OutlookApp.OlItemType.olMailItem);
Run Code Online (Sandbox Code Playgroud)
其中OutlookApp == Microsoft.Office.Interop.Outlook命名空间.
在调用第二行列表时,我不断收到此异常:( InvalidCastException)
无法将"Microsoft.Office.Interop.Outlook.ApplicationClass"类型的COM对象强制转换为接口类型"Microsoft.Office.Interop.Outlook._Application".此操作失败,因为由于以下错误,对IID为"{00063001-0000-0000-C000-000000000046}"的接口的COM组件的QueryInterface调用失败:库未注册.(HRESULT的例外情况:0x8002801D(TYPE_E_LIBNOTREGISTERED)).
该代码在我的其他工作站上适用于Outlook 2003.
我会很感激任何想法如何解决它.
小智 10
当您卸载Office 2013安装并返回office 2010时,也会发生这种情况.可能会有一些注册表项和dll,这会导致office应用程序加载错误的dll.
以下是修复:http://www.fieldstonsoftware.com/support/support_gsyncit_2013.shtml
Office未正确安装在该计算机上.您可以使用Regedit.exe验证,导航到HKEY_CLASSES_ROOT\Interface\{00063001-0000-0000-C000-000000000046}\TypeLib验证类型库GUID(应该是{00062FFF-0000-0000-C000-000000000046}),然后HKEY_CLASSES_ROOT\TypeLib\{00062FFF-0000-0000-C000-000000000046}使用正确的类型验证类型库是否确实已正确注册库版本号.后一部分应该是问题所在.
如果目标计算机运行64位版本的Windows,请尝试将Project + Properties,Build,Platform Target设置为x86.