5

我正在尝试构建我的项目,但当项目构建并勾选“注册 COM 互操作”属性时,我突然开始收到以下错误。

程序集“c:\MyAssembly.dll”无法转换为类型库。类型库导出器在处理“SomeType,MyAssembly”时遇到错误。错误:在托管组件中定义了引用的类型,该组件是从无法加载的类型库中导入的(类型:'OtherType';组件:'c:\OtherAssembly.dll')。

团队中没有其他人得到这个错误,只有我!显然我对我的机器做了一些奇怪的事情,但是完全删除/删除和重新添加我能想到的所有东西的蛮力方法没有任何区别,所以我不得不真正理解这个错误(多么拖累!)

所以:

  • 这个错误实际上是什么意思
  • 接下来我应该在哪里寻找关于问题的更多/更具体的诊断信息?
4

4 回答 4

2

我有这个问题。我只是做了同样gactutil /u的事情,(用于卸载)和gacutil /i (用于安装)并且问题解决了

于 2012-03-08T02:01:49.340 回答
2

就我而言,我有一个使用 regasm 注册的 com 暴露 dll(我更改了 guid)。我必须使用以下命令取消注册程序集,然后才能成功构建项目。

c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC>regasm /u "C:\some-vs-project\bin\Debug\some-vs-dll.dll"

此外,如果您更改了 GUID,您需要确保您在 assembly.cs 中使用的 GUID 与您在课堂上使用的 GUID 不同。我在类声明和程序集中都使用了相同的 GUID,这也会导致相同的错误。

于 2012-06-01T18:11:53.960 回答
1

就我而言,发生此错误是因为我通过 regsvr32 手动注册了 COM 服务器。当我后来移动包含 dll 的文件夹时,我忘记了更新注册表(即取消注册并重新注册 COM 服务器)。

重新注册服务器修复了错误。

于 2011-07-29T09:09:38.510 回答
1

我有完全相同的问题。通过将目标平台从 x86 更改为 Any CPU 神奇地修复了它

于 2020-05-19T12:37:27.580 回答