80040154 ошибка - класс interop.outlook.namespace не зарегистрирован - CLSID = {0006308B-0000-0000-C000-000000000046} - PullRequest
0 голосов
/ 15 декабря 2010

Я использую Visual Studio 2010 VB.Используя .net добавили ссылку на microsoft.office.interop.outlook type = .net версия 12.0.0.0 copy local = false path = ... microsoft visual studio 10.0 /../ pia / office12

Использованиеregasm.exe microsoft.office.interop.outlook.dll Я зарегистрировал эту сборку.Используя параметр / regfile, я просмотрел содержимое.CLSID, который не может быть найден (CLSID = {0006308B-0000-0000-C000-000000000046}), отсутствует в этом regfile.Я думаю, что так и должно быть.Этот classID на сайте MSDN приводит меня к классу Office 2010 Outlook.Namespace.Для Office 2007 не указан clSID.

В GAC зарегистрирован файл microsoft.office.interop.outlook.dll версии 12.0.0.0.

Когда я запускаю свое приложение, я получаю вышеуказанноеисключение во время выполнения.

Что мне нужно сделать, чтобы решить эту проблему.

Ответы [ 3 ]

0 голосов
/ 16 декабря 2010

Возможно, вы можете ударить по 32-битной <-> 64-битной стене.

  • ОС может быть 32-битной или 64-битной Office
  • 2010 может быть 32-битной или 64-битной
  • , и ваш процесс может быть «любым»процессор "или 32-разрядный или 64-разрядный.

, поэтому вы хотите убедиться, что все это согласованно.Например, если ОС 64-битная, Office 32-битная, а ваше приложение «Любой ЦП», вы, скорее всего, получите эту ошибку.(возможно, Office 2010 действительно поддерживает это ...)

0 голосов
/ 09 января 2011

Я обнаружил проблему.Я создавал пространство имен, когда его просто нужно было объявить.В частности:

Импорт Outlook = Microsoft.Office.Interop.Outlook Dim myapp As Outlook.Application = Новый Outlook.Application Dim ns = новый outlook.NameSpace ns = myapp.getNameSpace ("MAPI")

Когда я изменил его на следующее, ошибка во время выполнения исчезла, и она работала нормально:

Dim myapp As Outlook.Application = Новый Outlook.Application Dim NS = myapp.GetNamespace ("MAPI")

0 голосов
/ 16 декабря 2010

Самый простой способ избежать проблемы с неправильной версией dll Office - это использовать позднюю привязку, чтобы она не ссылалась на какую-либо конкретную версию dll.

В этом есть некоторые недостаткивы не можете использовать реальные типы из объектной модели Office и, следовательно, не будете иметь Intellisense для объектов автоматизации, и если вы уже написали весь код, вам придется изменить свой код, но в зависимости от ваших обстоятельств онможет стоить того.

В следующей статье объясняются различия между ранним и поздним связыванием и приводится пример кода для каждого из них: Как использовать Visual Basic .NET для привязки для серверов автоматизации Office

...