我无法通过 .NET 触发 Microsoft.Office.Interop.Outlook.dll

I can't trigger Microsoft.Office.Interop.Outlook.dll via .NET

我已经安装了 Visual Studio Office 工具 (VSTO),因此可以将 Microsoft.Office.Interop.Outlook.dll 用于我的 .Net 应用程序。但是,我收到以下错误。我认为它与注册表项有关,但我不确定。 Microsoft.Office.Interop.Outlook.dll 存在,但注册表可能正在其他地方寻找它?我以前的电脑上用过这个.dll库w/o问题。到那时,我还没有安装 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

但他们没有帮助

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

您似乎遇到了一些问题,Windows 注册表项被弄乱了。我建议修复 MS Office 以恢复丢失的密钥或尝试手动查看 windows 注册表项,如您 post 中提到的文章中所述。没有通用的修复方法。

我备份并删除了

下的两个 Win64 密钥

00062FFF-… 2DF8D04C…

然后成功了。

这是我的猜测:

我们升级了最新的 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版本会不会有什么问题