Проблема взаимодействия .NET / COM - открытие диалога отправки почты в Outlook 2003 - PullRequest
2 голосов
/ 10 февраля 2009

У нас есть приложение WinForms, написанное на VB.NET (CLR 2.0), которое выполняет множество вещей, связанных с Outlook. Одна из вещей, которые мы делаем, - это программно открываем новую форму «Составление новой электронной почты» Outlook 2003, предварительно заполненную адресом «до».

Me.WordApp = New Word.Application
Dim template As Object = System.Reflection.Missing.Value
Dim newTemplate As Object = System.Reflection.Missing.Value
Dim documentType As Object = Word.WdNewDocumentType.wdNewEmailMessage
Dim visible As Object = False
Me.WordDoc = Me.WordApp.Documents.Add(template, newTemplate, documentType, visible)
'then some other stuff

Теперь, это прекрасно работает почти везде, где мы разворачиваем приложение - пользователь заполняет тему и текст письма, щелкает, отправляет, и мы можем поймать событие Отправить и сделать другие полезные вещи.

Есть только пара установок, где он ломается, и мы просто не можем докопаться до сути.

Дает ли следующее указание на то, где может быть проблема:

Could not load file or assembly 'office, Version=11.0.0.0, Culture=neutral, 
PublicKeyToken=71e9bce111e9429c' or one of its dependencies. The located assembly's 
manifest definition does not match the assembly reference. (Exception from HRESULT: 
0x80131040)

Насколько мы можем судить, это всего лишь установки Office 2003 с Outlook и Word, как в случаях, когда он работает нормально.

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

Ответы [ 2 ]

2 голосов
/ 11 февраля 2009

Хорошо, это отсортировано, и я благодарен Олли за его ответ , который поставил меня на правильный путь.

Его ссылка на "примеры проектов" привела меня к этой ссылке о развертывании решений VSTO .

В котором я нашел откровенный комментарий:

"Приложения Microsoft Office устанавливают основные сборки взаимодействия только в том случае, если на конечном компьютере установлена ​​.NET Framework 1.1 или более поздняя версия."

Загорелся свет - и я настроил виртуальную машину, на которую я установил (в следующем порядке):

  • XP SP2
  • Office 2003 (установка по умолчанию)
  • .NET 3.5 SP1 (большой распространяемый)
  • Мое приложение

Бинго - проблема стала воспроизводимой, как и другая, о которой я собирался попросить помощи сообщества. Как вы можете себе представить, на всех наших компьютерах и на большинстве клиентов уже установлен .NET при запуске Office, поэтому обычно это вообще не проблема.

Переустановка Office не удалось исправить, как и установка «обнаружение и восстановление».

Тем не менее, установка «Добавить функции» позволяет вручную выбрать опцию .NET Programmability Support, и проблема исчезнет.

Итог:

Нет .NET, нет основных сборок взаимодействия с установкой Office.

Еще раз спасибо Олли!

1 голос
/ 10 февраля 2009

У меня был похожий опыт работы с надстройкой Excel 2003. У вас на компьютере разработчика установлены и Office 2003, и Office 2007? Если это так, проверьте раздел References в вашем проекте. У меня была зависимость от Office 11, но под сборкой взаимодействия Office 12 использовалась.

Я думаю, что Перенаправление привязки сборки доставляло мне неприятности.

Редактировать: примеры проектов Microsoft очень помогли. Дополнительной проблемой были настройки безопасности на некоторых машинах (см. Проект SetSecurity, который используется в примерах проектов установки).

...