80040154 Класс не зарегистрирован ОШИБКА в Outlook 2010 Add In - PullRequest
3 голосов
/ 13 июля 2011

Я использую Visual Studio 2010 для создания надстройки Outlook 2010. Я пытаюсь создать новый Outlook AppointmentItem для работы, думая, что в конечном итоге смогу добавить его в календарь.

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

Но когда AddIn запускается и пытается создать объект 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.

Ответы [ 3 ]

3 голосов
/ 13 июля 2011

У вас установлен Outlook 2010? Сборка взаимодействия - это просто оболочка .NET для COM-компонента Outlook 2010. Этот компонент должен быть зарегистрирован для взаимодействия. Эта регистрация обычно выполняется приложением, владеющим компонентом, т.е. в данном случае Outlook.

Вы можете попробовать зарегистрировать компонент с помощью утилиты regsvr32, но вы должны знать имя библиотеки, содержащей компонент.

Используйте OleView (теперь он называется «Просмотр объектов OLE-COM») из «Пуск Меню \ Программы \ MS Visual Studio xxxx \ Microsoft Windows SDK Tools», чтобы просмотреть зарегистрированные компоненты.

И проверьте наличие опции x86 / x64. Например. у вас может быть зарегистрировано 32-битная версия этого компонента и 64-битное приложение или наоборот.

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

2 голосов
/ 13 июля 2011

Сообщение об исключении не очень полезно, они могли бы лучше справиться с объявлением COM. Это по замыслу, класс не зарегистрирован. Вы должны создать его экземпляр с помощью метода Application.CreateItem ().

1 голос
/ 30 сентября 2013

Вот что я обычно делаю для всех необходимых мне объектов взаимодействия 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);

Это похоже на приведенное выше решение.

...