C# 80040154类未在Outlook 2010加载项中注册错误

C# 80040154类未在Outlook 2010加载项中注册错误,c#,visual-studio-2010,ms-office,outlook-addin,office-interop,C#,Visual Studio 2010,Ms Office,Outlook Addin,Office Interop,我正在使用Visual Studio 2010创建Outlook 2010加载项。我尝试创建一个新的Outlook AppointmentItem,以便最终将其添加到日历中 Microsoft.Office.Interop.Outlook.AppointmentItem tempApp = new Microsoft.Office.Interop.Outlook.AppointmentItem(); 但是当加载项运行并尝试创建AppointmentItem对象时,我在上面的一行中遇到了这个错误

我正在使用Visual Studio 2010创建Outlook 2010加载项。我尝试创建一个新的Outlook AppointmentItem,以便最终将其添加到日历中

Microsoft.Office.Interop.Outlook.AppointmentItem tempApp = new Microsoft.Office.Interop.Outlook.AppointmentItem();
但是当加载项运行并尝试创建AppointmentItem对象时,我在上面的一行中遇到了这个错误

System.Runtime.InteropServices.COMException was unhandled by user code
      Message=Retrieving the COM class factory for component with CLSID {00061030-0000-0000-C000-000000000046} failed due to the following error: 80040154 Class not registered (Exception from HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG)).
      Source=mscorlib
      ErrorCode=-2147221164

我可以做什么来“注册课程”?我猜这在某种程度上与Microsoft.Office.Interop.Outlook.dll有关。

您是否安装了Outlook 2010?互操作程序集只是Outlook 2010 COM组件的.NET包装器。应注册此组件以使互操作正常工作。此注册通常由拥有组件的应用程序执行,在本例中为Outlook

您可以尝试通过regsvr32实用程序注册该组件,但必须知道包含该组件的dll的名称

使用“开始菜单\Programs\MS Visual Studio xxxx\Microsoft Windows SDK Tools”中的OleView(现在称为“OLE-COM对象查看器”)查看已注册的组件

并检查x86/x64选项。例如,您可以注册此组件的32位版本和64位应用程序,反之亦然


异常消息没有多大帮助,他们本可以在COM声明方面做得更好。这是设计的,类没有注册。您必须使用Application.CreateItem()方法创建它的实例。

以下是我通常为所有需要的Outlook Interop对象所做的操作:

    // In Global Properties
    public static Outlook.Application olook = new Outlook.Application();        // Outlook Application Object.

    // In Method 
    Outlook.AppointmentItem olookAppointment = (Outlook.AppointmentItem)olook.CreateItem(Outlook.OlItemType.olAppointmentItem);

它与上述解决方案类似。

尝试安装/重新安装outlook,从我在其他论坛上读到的内容来看,这可能会奏效-我确实安装了outlook 2010,但它是32位版本,我相信我的加载项是64位的,因为我是在64位系统上开发的。-我在OLE/COM对象查看器中查找,Microsoft Outlook 14.0对象库(9.4版)的TypeLib注册表的GUID与错误{000062FFF-0000-0000-C000-0000000000}和错误{00061030-0000-C000-0000000000 46}中显示的GUID不同具体来说,这就是现在运行的代码-
Globals.ThisAddIn.Application.CreateItem(Microsoft.Office.Interop.Outlook.OlItemType.olAppointmentItem)