COM互操作的寄存器问题-错误:找不到元素

问题描述 投票:0回答:1

使用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工具实用程序

我以this post的身份以管理员身份运行Visual Studio。

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

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

我还下载了Dependency Walker,并用它查看了dll。在我看来,依赖行者正在找到所有依赖项,就可以了。

任何帮助将不胜感激。

c# com interop
1个回答
0
投票

看起来好像缺少一个dll:

C:\ Windows \ SysWOW64 \ oleaut32.dll

我通过从头开始构建项目来发现了这一点。在每一步中,我都要检查应用程序。从NuGet软件包安装依赖项时,我开始遇到问题。 NuGet安装未报告任何错误。这次互操作注册错误消息更加清楚了,告诉我刚刚使用NuGet安装的dll之一存在问题。我使用Dependency Walker打开了有问题的dll,并说找不到上面的文件。

为了解决这个问题,我从Visual Studio修复开始,似乎可以还原dll。值得庆幸的是,它修复了它。如果没有,我将继续修复Windows 10。

© www.soinside.com 2019 - 2024. All rights reserved.