3

我正在使用Visual Studio 2010创建Outlook 2010添加。我尝试创建一个新的Outlook AppointmentItem,并认为我可以最终将其添加到日历中。80040154类未注册Outlook 2010中的错误加入

Microsoft.Office.Interop.Outlook.AppointmentItem tempApp = new Microsoft.Office.Interop.Outlook.AppointmentItem(); 

但是,当AddIn运行并trys创建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。

+0

尝试安装/重新安装outlook,从我在其他论坛上阅读,这可能会做诡计 –

回答

2

异常消息是不是非常有帮助,他们可以做与COM申报工作做得更好。这是设计,班级没有注册。您必须使用Application.CreateItem()方法创建它的一个实例。

+0

具体来说,这是代码现在看起来像什么样的工作 - 全局。 ThisAddIn.Application.CreateItem(Microsoft.Office.Interop.Outlook.OlItemType.olAppointmentItem)' – kavun

3

您是否安装了Outlook 2010?互操作程序集只是Outlook 2010的COM组件的.NET包装器。应该注册此组件以便互操作。此注册通常由拥有该组件的应用程序执行,即Outlook。

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

从“开始菜单\程序\ MS Visual Studio xxxx \ Microsoft Windows SDK工具”中使用OleView(现称为“OLE-COM对象查看器”)来查看已注册的组件。

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

http://www.msoutlook.info/question/461

+0

- 我确实安装了Outlook 2010,但它是一个32位版本,我相信我的AddIn是64位,因为我我正在开发一个64位系统。 - 我查看了OLE/COM Object Viewer,Microsoft Outlook 14.0 Object Library(版本9.4)的TypeLib Registry具有与错误中显示的不同的GUID - {000062FFF-0000-0000-C000-0000000000} vs错误{00061030-0000-0000-C000-000000000046} – kavun

+1

尝试寻找http://msdn.microsoft.com/en-us/library/gg549122.aspx –

1

以下是我通常用于所有Outlook互操作的对象,我需要做的:

// 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); 

它类似于上述方案。

相关问题