Microsoft.Office.Interop.Outlook .net 核心中的错误
Microsoft.Office.Interop.Outlook error in .net core
我有一个使用 COM 对象访问 Outlook 的程序 Microsoft.Office.Interop.Outlook
。
程序的第一部分创建一个新的 Outlook Application
并获取 allpublicfolders
文件夹。
using Outlook = Microsoft.Office.Interop.Outlook;
Outlook.Application application = new Outlook.Application();
Outlook.Folder allPublicFolder =
application
.Session
.GetDefaultFolder (Outlook.OlDefaultFolders.olPublicFoldersAllPublicFolders)
as Outlook.Folder;
该程序最初以 .NET Framework 为目标,并且按预期运行。但是在我最近将它移动到 .NET 6 之后,我在 .Session
部分下面得到了一个 红色错误行 。
错误消息说明如下:
"Error CS1061 'Application' does not contain a definition for 'Session' and no accessible extension method 'Session' accepting a first argument of type 'Application' could be found (are you missing a using directive or an assembly reference?)"
关于可能导致此问题的原因有什么想法吗?
编辑:删除第二行后发现即使是第一行 (new Outlook.Application()) returns 也是一个错误:
“无法将类型 'System_ComObject' 的 COM 对象转换为接口类型 'Microsoft.Office.Interloop.Outlook.Application. This operation failed because the QueryInterface call on the COM component for the interface with IID '{00063001-0000-0000-C000-000000000046}' 由于以下错误而失败:找不到元素。(0x8002802B (TYPE_E_ELEMENTNOTFOUND))"
我刚刚尝试在 VS2022 中创建一个基于 .net 6 的控制台应用程序,在编译和 运行 调试器下的应用程序方面没有遇到任何问题。我这边一切顺利。这是我的项目的文件内容:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<RootNamespace>ConsoleApp3</RootNamespace>
<TargetFramework>net6.0</TargetFramework>
</PropertyGroup>
<ItemGroup>
<COMReference Include="Microsoft.Office.Interop.Outlook">
<WrapperTool>tlbimp</WrapperTool>
<VersionMinor>6</VersionMinor>
<VersionMajor>9</VersionMajor>
<Guid>00062fff-0000-0000-c000-000000000046</Guid>
<Lcid>0</Lcid>
<Isolated>false</Isolated>
<EmbedInteropTypes>true</EmbedInteropTypes>
</COMReference>
</ItemGroup>
</Project>
确保目标平台设置为 AnyCPU
。
错误是由于注册表编辑器中缺少组件 [HKEY_CLASSES_ROOT\Interface{00063001-0000-0000-C000-000000000046}] 引起的。
修复office没用,重装office创建组件,错误解决。
我有一个使用 COM 对象访问 Outlook 的程序 Microsoft.Office.Interop.Outlook
。
程序的第一部分创建一个新的 Outlook Application
并获取 allpublicfolders
文件夹。
using Outlook = Microsoft.Office.Interop.Outlook;
Outlook.Application application = new Outlook.Application();
Outlook.Folder allPublicFolder =
application
.Session
.GetDefaultFolder (Outlook.OlDefaultFolders.olPublicFoldersAllPublicFolders)
as Outlook.Folder;
该程序最初以 .NET Framework 为目标,并且按预期运行。但是在我最近将它移动到 .NET 6 之后,我在 .Session
部分下面得到了一个 红色错误行 。
错误消息说明如下:
"Error CS1061 'Application' does not contain a definition for 'Session' and no accessible extension method 'Session' accepting a first argument of type 'Application' could be found (are you missing a using directive or an assembly reference?)"
关于可能导致此问题的原因有什么想法吗?
编辑:删除第二行后发现即使是第一行 (new Outlook.Application()) returns 也是一个错误: “无法将类型 'System_ComObject' 的 COM 对象转换为接口类型 'Microsoft.Office.Interloop.Outlook.Application. This operation failed because the QueryInterface call on the COM component for the interface with IID '{00063001-0000-0000-C000-000000000046}' 由于以下错误而失败:找不到元素。(0x8002802B (TYPE_E_ELEMENTNOTFOUND))"
我刚刚尝试在 VS2022 中创建一个基于 .net 6 的控制台应用程序,在编译和 运行 调试器下的应用程序方面没有遇到任何问题。我这边一切顺利。这是我的项目的文件内容:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<RootNamespace>ConsoleApp3</RootNamespace>
<TargetFramework>net6.0</TargetFramework>
</PropertyGroup>
<ItemGroup>
<COMReference Include="Microsoft.Office.Interop.Outlook">
<WrapperTool>tlbimp</WrapperTool>
<VersionMinor>6</VersionMinor>
<VersionMajor>9</VersionMajor>
<Guid>00062fff-0000-0000-c000-000000000046</Guid>
<Lcid>0</Lcid>
<Isolated>false</Isolated>
<EmbedInteropTypes>true</EmbedInteropTypes>
</COMReference>
</ItemGroup>
</Project>
确保目标平台设置为 AnyCPU
。
错误是由于注册表编辑器中缺少组件 [HKEY_CLASSES_ROOT\Interface{00063001-0000-0000-C000-000000000046}] 引起的。 修复office没用,重装office创建组件,错误解决。