0

我已经安装了 Visual Studio Tools for Office (VSTO),因此可以将 Microsoft.Office.Interop.Outlook.dll 用于我的 .Net 应用程序。但是,我收到以下错误。我认为它与注册表项有关,但我不确定。Microsoft.Office.Interop.Outlook.dll 存在,但注册表可能正在其他地方寻找它?我以前在没有问题的计算机上使用这个 .dll 库。那时,我没有安装 VSTO,但它是类似的。你知道我该如何解决这个问题吗?

第 3 行在屏幕截图中引发了以下异常

using Microsoft.Office.Interop.Outlook;

Microsoft.Office.Interop.Outlook.Application oApp = new Microsoft.Office.Interop.Outlook.Application();

Microsoft.Office.Interop.Outlook.MailItem oMsg = (Microsoft.Office.Interop.Outlook.MailItem)oApp.CreateItem(Microsoft.Office.Interop.Outlook.OlItemType.olMailItem);

我发现这些Unable to cast COM object of type 'Microsoft.Office.Interop.Outlook.ApplicationClass' {00063001-0000-0000-C000-000000000046} HRESULT: 0x80040155

https://social.msdn.microsoft.com/Forums/vstudio/en-US/ac50fa41-8d47-4fa9-81a3-914f262676af/0x80029c4a-typeecantloadlibrary?forum=vsto

但他们没有帮助

在此处输入图像描述

在此处输入图像描述

4

2 回答 2

0

我备份并删除了两个 Win64 Keys 下

00062FFF-…2DF8D04C…</p>

然后它起作用了。

这是我的猜测:

我们升级了最新的 2021 Office(64 位)并降级回 2016 Office(32 位),我相信这是问题的根源。

我认为 VS 试图使用 64 位 Outlook,但它当然不存在。因此,它在

Microsoft.Office.Core Microsoft.Office.Interop.Outlook

我尝试直接浏览和连接库(即,右键单击引用>添加引用>浏览)但没有运气。我认为 VS 仍然指的是 64 位 Office/Outlook

当我删除 Win64 键时,VS 被迫使用存在的 32 位 Office,它工作正常。

花了一段时间才弄清楚我希望这个答案可以帮助其他用户。顺便说一句,我不知道删除这些注册表是否会在我们再次升级更高版本的 Office 时出现任何问题。

于 2022-01-11T15:10:37.670 回答
0

如果您从基于 .Net 的应用程序自动化 Outlook,则无需使用 VSTO。VSTO 代表 Visual Studio Tools for Office,专为开发 Office COM 加载项而设计。

您似乎遇到了一些问题,因为 Windows 注册表项搞砸了。我建议修复 MS Office 以恢复丢失的密钥或尝试手动查看 Windows 注册表项,如您帖子中提到的文章中所述。没有通用的解决方法。

于 2021-12-13T16:52:19.257 回答