.NET Core 3.0 中的 Outlook Interop?

Outlook Interop in .NET Core 3.0?

我将我们的项目从 .NET Framework 迁移到 .NET Core 3.0(C#、WPF),现在我不能再使用 Microsoft.Office.Interop.Outlook,因为它与 .NET Core 3.0 不兼容。我想要实现的是 opening/sending 预填充的 Outlook 电子邮件。

是否有此互操作 dll 的替代方法,或者是否有仅将 .NET Framework 用于此参考的方法?

我在尝试使用 Microsoft.Office.Interop.Excel 15.0.4795.1000 时遇到了同样的问题。当我以 .net core 3.00 预览版 7 为目标时,它不会 运行。

现阶段我认为除了恢复到 .NEW Core 2.2 之外没有其他选择。

我在将 Excel 和 Outlook 的 Office 互操作组件迁移到 .NET Core 3.0 时遇到了同样的问题。我发现这只是 Nuget 包 Microsoft.Office.Interop.Outlook 和 Microsoft.Office.Interop.Excel 的问题。这些软件包可能需要更新才能与 3.0 一起使用?

如果我直接引用 Interop 程序集,则一切正常。这是一个 link 的示例。

如果您使用 Visual Studio,您需要一个额外的解决方法来实现这一点。来自链接示例:

Adding COM references to .NET Core projects from Visual Studio is not currently supported. The workaround is to create a .NET Framework project, add the COM references, and then copy the relevant COMReference elements in the project.

这可以通过迂回的方式实现。方法如下:

  1. 创建一个临时的 .NET Framework 项目。
  2. 添加对 COM 组件的引用 (Microsoft.Outlook.Interop)。
  3. 打开该 csproj 文件并将所有这些组件复制到您的 .NET Core 项目中。

目前 nuget 包似乎不兼容。

参考:DotNet Samples

这对我有用:

  1. 右键单击依赖项并单击 "Add Reference"
  2. Select COM 选项卡下的 Microsoft Outlook 16.0 对象库。
  3. 在你的项目Dependencies/COM下,select Interop.Microsoft.Office.Interop.Outlook引用,然后在"Properties"下设置"Embed Interop Types"为"Yes"
  4. 我还必须卸载 Microsoft.Office.Interop.Outlook NuGet 包,因为它与 Dependencies/COM 中的引用发生冲突。

Outlook 自动化现在运行良好。