C# COM互操作寄存器出现问题-错误:找不到元素

C# COM互操作寄存器出现问题-错误:找不到元素,c#,com,interop,C#,Com,Interop,使用Visual Studio开发作为应用程序插件的dll。加载项需要注册才能工作。不知怎的,有些事情搞砸了,我不知道是什么。此时,如果没有选中“Build->Register for COM interop”,dll将编译。如果选中,则我会得到错误: 程序集“C:\Users\erics\source\repos\XXXX Tooling Utilities\XXXX Tooling Utilities\bin\Debug\XXXX Tooling Utilities.dll”无法转换为类型库

使用Visual Studio开发作为应用程序插件的dll。加载项需要注册才能工作。不知怎的,有些事情搞砸了,我不知道是什么。此时,如果没有选中“Build->Register for COM interop”,dll将编译。如果选中,则我会得到错误:

程序集“C:\Users\erics\source\repos\XXXX Tooling Utilities\XXXX Tooling Utilities\bin\Debug\XXXX Tooling Utilities.dll”无法转换为类型库。类型库导出程序在处理“XXXXUtilities.AddIn,XXXX工具实用程序”时遇到错误。错误:找不到元素。XXXX工具实用程序

正如所指出的,我以管理员的身份运行VisualStudio

我尝试在管理员模式下使用RegAsm.exe手动注册此dll,但得到了类似的结果:

类型已成功注册 RegAsm:错误RA0000:类型库导出程序在处理“XXXXUtilities.AddIn,XXXX工具实用程序”时遇到错误。错误:找不到元素

我还下载了一个,并用它查看了dll。在我看来,依赖项查询器正在查找所有的依赖项


如果您有任何帮助,我们将不胜感激。

似乎缺少一个dll:

C:\Windows\SysWOW64\oleaut32.dll

我是通过重新从头开始构建我的项目而发现这一点的。每一步我都会检查应用程序。当我从NuGet软件包安装依赖项时,我开始出现问题。NuGet安装没有报告任何错误。这次互操作注册错误消息更清楚地告诉我,我刚才使用NuGet安装的一个dll出现了问题。我使用打开了带有问题的dll,并说它找不到上面的文件


为了解决这个问题,我从一个VisualStudio修复开始,它似乎恢复了dll。谢天谢地,这解决了它。如果没有,我将继续修复Windows 10。

自上次运行以来,您是否更改了Excel的版本?不是这样,如果缺少此DLL,您将无法启动VS。Depends.exe正在成为一个非常危险的工具。@HansPassant-你是说Depends是不正确的?我实际浏览了该文件夹,但oleaut32.dll不在那里。我肯定还可以启动VisualStudio。你知道那会是什么吗?