gpt4 book ai didi

c# - 无法添加对 Outlook 2016 (Office 365) Interop (16.0.0.0) 的引用

转载 作者:太空狗 更新时间:2023-10-29 20:35:52 26 4
gpt4 key购买 nike

我正在尝试在 C# .NET 4.6.1 WPF 项目中添加对“Microsoft Outlook 16.0 对象库”的引用,因为我安装了 Office 2016。以前版本的对象库与 2016 版的 office 不兼容。

如果我使用 Excel 的 VBA 编辑器,则会列出“Microsoft Outlook 16.0 对象库”,并且存在于 C:\Program Files\WindowsApps\Microsoft.Office.Desktop_16010.9126.2116.0_x86_8wekyb3d8bbwe\VFS\ProgramFilesCommonX86\Microsoft Shared\OFFICE16\MSOUTL.OLB 中。 ,如下所示:

enter image description here

但是,当我使用 Visual Studio 时,COM 选项卡未列出“Microsoft Office 16.0 对象库”,并且当我尝试浏览到 C:\Program Files\WindowsApps 时,我得到“您当前没有访问此文件夹的权限”,单击“继续”(以获取访问权限)会导致“您被拒绝访问此文件夹的权限”。

所以基本上,Office 2016 dll 似乎被隐藏在一个人、狗和本地管理员无法访问的文件夹中。

我想要做的就是连接到打开的 Outlook 应用程序,然后发送一封带有附件的电子邮件,所以也许要问的另一个问题是,是否有一些新的与 Outlook 2016 通信的方式尚未出现我的谷歌马拉松?

另外值得注意的是,我的 Office 版本安装为“Windows 应用商店应用程序”,因此不会出现在通常的添加/删除程序列表中,因此我找不到任何安装的“修复”选项。

谢谢。

进一步的调查表明我正在做正确的事情 - 尝试添加对“Microsoft Outlook 16.0 对象库”的 COM 引用现在是针对 Outlook 的正确方法...... https://stackoverflow.com/a/21018418/5040941 .

我检查了 GAC,但程序集未注册。我已经通过“应用程序和功能”右键单击开始菜单选项进行了修复,但它们仍然没有出现 - 就好像 Windows 应用商店应用程序只是将它们的 dll 插入了 Program Files\WindowsApps\*文件夹,不要费心在 GAC 中注册它们。

回应备受赞赏的评论!

使用以下代码

Outlook.Application application = (Outlook.Application)Marshal.GetActiveObject("Outlook.Application");

如果我使用 nuget Microsoft.Office.Interop.Outlook包裹,我得到一个 System.Runtime.InteropServices.COMException: 'Invalid class string (Exception from HRESULT: 0x800401F3 (CO_E_CLASSSTRING))'异常(exception)。

如果我尝试使用 Microsoft Outlook 15.0 Object LibraryMicrosoft Outlook 14.0 Object Library通过 Add Reference 的 Assemblies/Extensions 选项卡引用,我得到一个 System.Runtime.InteropServices.COMException: 'Invalid class string (Exception from HRESULT: 0x800401F3 (CO_E_CLASSSTRING))'异常(exception)。

我不认为访问 WindowsApps 文件夹是要走的路。
首先,它由于某种原因被锁定,这通常表明如果我开始四处寻找和更改安全权限可能会出现问题,更不用说在我的解决方案中维护最新 dll 的副本无疑会给我的项目增加不必要的复杂性这一事实。

其次,但更重要的是,如果我安装了 Office,并且可以从 Excel Vba 访问“Microsoft Outlook 16.0 对象库”,那么为什么我不能从 Visual Studio 访问它?

安装显然存在一些问题,没有正确注册 dll,只有 Excel 有一些技巧可以使引用无论如何都可用。

有没有人读过这篇文章设法安装了 Office 365/2016 Windows Store 并在 Visual Studio 中找到了对“Microsoft Outlook 16.0 对象库”的引用?

只有我有这个问题吗?!因为它会影响我办公室中运行 Windows 10 和 Office 365 的多台计算机......

为了回答 RogerN(谢谢),请看下图 - 我没有列出 Microsoft.Office.Interop.Outlook 版本 16,也没有列出 Microsoft.Office.Core。

enter image description here

如果我尝试使用 v15 库,则会收到以下错误:
System.Runtime.InteropServices.COMException
HResult=0x80040154
Message=Retrieving the COM class factory for component with CLSID {0006F03A-0000-0000-C000-000000000046} failed due to the following error: 80040154 Class not registered (Exception from HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG)).
Source=mscorlib

*答案是*

我从戴尔购买的两台计算机是 64 位的,但它们预装了 32 位 Windows 商店版本的 MS Office 2016/365。

为了解决这个问题,我不得不:
  • Settings > Apps > Apps&Features > Microsoft Office Desktop Apps > Uninstall 卸载商店应用程序
  • 登录portal.office.com
  • 选择安装办公应用,高级,选择64位版本

  • 为什么戴尔认为我们希望在 64 位机器上安装 32 位版本,或者为什么微软的人没有发布解决这个问题的解决方案,这超出了我的理解,但无论如何,RogerN 是正确的。感谢大家抽出时间来帮助我。

    最佳答案

    详细说明我之前的评论:根据您的描述,听起来您已经在 64 位计算机上安装了 32 位版本的 Microsoft Office。只会注册 32 位 COM 对象,因此 64 位 .NET 应用程序将无法找到它们。如果您搜索您的注册表,您应该会发现 0006F03A-0000-0000-C000-000000000046 类 ID 仅注册在 Wow6432Node 下。

    要解决此问题,您可以安装 64 位版本的 Office,也可以强制您的 .NET 应用程序面向 x86 平台。

    关于c# - 无法添加对 Outlook 2016 (Office 365) Interop (16.0.0.0) 的引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49895408/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com