Outlook Interop в .NET Core 3.0?

Я перенес наш проект с .NET Framework на .NET Core 3.0 (C #, WPF), и теперь я больше не могу использовать Microsoft.Office.Interop.Outlook, потому что он несовместим с .NET Core 3.0. Я хочу заархивировать открытие / отправку предварительно заполненных сообщений Outlook.

Есть ли альтернатива этому interop dll или, может быть, способ использовать .NET Framework только для этой ссылки?

Спасибо и всего наилучшего!

Microsoft.Office.Interop.Outlook, NetOffice.Outlook


person nitg    schedule 04.06.2019    source источник
comment
Если вы все еще выполняете развертывание на компьютере с Windows, у вас может быть вторая программа, возможно, служба, работающая на 472, с которой ваша основная программа может взаимодействовать.   -  person Davesoft    schedule 05.06.2019
comment
@nitg Предложение пользователя @PAQ хорошо объяснено и работает. Если это работает и для вас, вы можете пометить его решение как Answer, чтобы другие также могли извлечь из него пользу.   -  person nam    schedule 23.04.2020


Ответы (4)


Это сработало для меня:

  1. Щелкните правой кнопкой мыши "Зависимости" и выберите "Добавить ссылку".
  2. Выберите Microsoft Outlook 16.0 Object Library на вкладке COM.
  3. В разделе «Зависимости / COM» в вашем проекте выберите ссылку Interop.Microsoft.Office.Interop.Outlook, затем в разделе «Свойства» установите для параметра «Встраивать типы взаимодействия» значение «Да».
  4. Мне также пришлось удалить пакет NuGet Microsoft.Office.Interop.Outlook, поскольку он вызвал конфликт со ссылкой в ​​Dependencies / COM.

Автоматизация Outlook теперь работает нормально.

person PAQ    schedule 21.03.2020
comment
Это лучшее решение, которое я видел в Интернете по этой проблеме. Другие предложения / решения, в том числе приведенные в официальной демонстрации, кажутся довольно сложно и запутанно. Спасибо, что поделились своим решением. Ваше решение хорошо объяснено пошагово и гораздо более понятно и понятно. Это очень помогло мне, и я надеюсь, что поможет и другим читателям. Хорошая работа и спасибо. Я попросил OP (@nitg) отметить ваше решение как Answer, если оно сработало для него / нее. - person nam; 23.04.2020
comment
Извините за задержку и спасибо за ответ, у меня это тоже сработало! - person nitg; 18.05.2020

У меня такая же проблема при попытке использовать Microsoft.Office.Interop.Excel 15.0.4795.1000. Он не будет работать, если я нацелен на .net core 3.00 preview 7.

На данном этапе я не думаю, что есть другой вариант, кроме возврата к .NEW Core 2.2.

person Yann    schedule 26.07.2019

У меня была такая же проблема при переносе компонентов с взаимодействием Office для Excel и Outlook на .NET Core 3.0. Я выяснил, что это проблема только пакетов Nuget Microsoft.Office.Interop.Outlook и Microsoft.Office.Interop.Excel. Возможно, пакеты нуждаются в обновлении для работы с 3.0?

Если я сделаю прямые ссылки на сборки Interop, все будет хорошо. Вот ссылка на пример этого.

Если вы используете Visual Studio, вам понадобится дополнительный обходной путь для достижения этой цели. Из связанного образца:

Добавление ссылок COM в проекты .NET Core из Visual Studio в настоящее время не поддерживается. Обходной путь - создать проект .NET Framework, добавить ссылки COM, а затем скопировать соответствующие элементы COMReference в проект.

person Dirk Brockhaus    schedule 09.10.2019

Это возможно окольными путями. Вот как:

  1. Создайте временный проект .NET framework.
  2. Добавьте ссылки на компоненты COM (Microsoft.Outlook.Interop).
  3. Откройте этот файл csproj и скопируйте все эти компоненты в свой проект .NET Core.

Пакеты nuget кажутся несовместимыми на данный момент.

Ссылка: Примеры DotNet

person Jahmic    schedule 29.01.2020