2013-08-22 1 views
1

Попытка автоматизировать внешний вид, какПерспективы Interop Исключение

Microsoft.Office.Interop.Outlook.Application myApp = new Microsoft.Office.Interop.Outlook.ApplicationClass();  
Microsoft.Office.Interop.Outlook.NameSpace mapiNameSpace = myApp.GetNamespace("MAPI"); 

и получая следующее исключение на второй линии, т.е. GetNamespace

Unable to cast COM object of type 'Microsoft.Office.Interop.Outlook.ApplicationClass' to interface type 'Microsoft.Office.Interop.Outlook._Application'. This operation failed because the QueryInterface call on the COM component for the interface with IID '{00063001-0000-0000-C000-000000000046}' failed due to the following error: No such interface supported (Exception from HRESULT: 0x80004002 (E_NOINTERFACE)).

Я использую .Net Framework 4 и Outlook 2013.

Это this единственное решение !!! поскольку я пытаюсь избежать внесения каких-либо изменений в реестр.

Редактировать

this не решить эту проблему.

Редактировать Если ссылочной библиотекой является Office 15, а установленная библиотека - 10 или 12, будет ли она работать?

+0

пытается http://stackoverflow.com/questions/4656360/unable-to-cast-com-object-microsoft-outlook-c-sharp?rq=1 – bjan

ответ

0

Вы пробовали это?

Microsoft.Office.Interop.Outlook.Application myApp = new Microsoft.Office.Interop.Outlook.Application(); 
Microsoft.Office.Interop.Outlook.NameSpace mapiNameSpace = myApp.GetNamespace("MAPI"); 
+0

Да, та же ошибка – bjan

1

Исключение выглядит вполне очевидно, что это должно работать

var myApp = new Microsoft.Office.Interop.Outlook.Application(); 

вы просто не можете получить исключение броска с этой строкой выше.

+0

Исключение возникает при получении пространства имен, т.е. 'myApp.GetNamespace'. Тем не менее, я попробовал это, и исключение снова вызывается 'var myApp = new Microsoft.Office.Interop.Outlook.Application(); var mapiNameSpace = myApp.GetNamespace ("MAPI"); ' – bjan

1

Это исключение обычно происходит, когда у вас установлены две версии Office, а затем удалены. Запустите установку восстановления для вашего установленного Office, это должно исправить ключи реестра.

-1
//DECLARE 
    Microsoft.Office.Interop.Outlook.Application app = null; 
    Microsoft.Office.Interop.Outlook.NameSpace ns = null; 

    //INITIALISE 
    app = new Microsoft.Office.Interop.Outlook.Application(); 
    ns = app.Session; 
+0

нет сомнения. Я предлагал то, что может быть решением проблемы :) – TheDanMan

0

Исправление версии 9.5 не работает для меня, так как не было избыточного поля 9.5.

В моем случае проблема заключалась в том, что при переопределении в Outlook 2010 я изменил местоположение установки (то есть не в папке ProgramFiles по умолчанию). Однако окна не обновили соответствующее значение в 'HKEY_CLASSES_ROOT \ TypeLib {00062FFF-0000-0000-C000-000000000046} \ 9.4 \ 0 \ win64'.

После ручного обновления значения и указания его в нужном месте проблема была решена.

0

Я столкнулся с тем же сообщением об ошибке, которое у меня было, проблема была в том, что я установил Office 2016 x64, в то время как приложение, которое пыталось позвонить в него, было скомпилировано как x86. Переход на x86 Office 2016 решил проблему для меня.

0

Я был в тупике от этой проблемы в течение нескольких дней. Это сработало для меня:

Я только что понял, что Outlook 2013 - это 64 бит ... И мое приложение C# было в Project Properties -> Build «Any CPU» в качестве целевой платформы, а контрольная отметка в «Предпочитаете 32-разрядную ».

Я изменил цель платформы на x64, и она сработала!

-1

Для меня удаление 9.5 запись из этого реестра работает:

HKEY_CLASSES_ROOT\TypeLib\{00062FFF-0000-0000-C000-000000000046}