错误。集合体 "c:\MyAssembly.dll "不能被转换为类型库。

问题描述 投票:4回答:4

我正在尝试构建我的项目,当项目构建并勾选 "Register for COM interop "属性时,我突然开始收到以下错误。

集合体 "c:\MyAssembly.dll "无法转换为类型库。类型库导出器在处理 "SomeType, MyAssembly "时遇到了一个错误。错误。Referenced type is defined in managed component, which is imported from a type library that could not be loaded (type: 'OtherType'; component: 'c:\OtherAssembly.dll').

团队中没有人得到这个错误,只有我得到这个错误。 很明显,我在我的机器上做了一些奇怪的事情,然而,完全删除和重新添加所有我能想到的东西的蛮力方法没有任何区别,所以我不愿意真正理解这个错误(真是太拖沓了!)。

那么。

  • 这个错误到底是什么?卑鄙
  • 下一步我应该去哪里寻找更多更具体的诊断信息,看看是什么问题?
.net build-error typelib
4个回答
2
投票

我也有这个问题。我也是这样做的。gactutil /u (用于卸载)和 gacutil /i (用于安装),问题就解决了。


2
投票

在我的例子中,我有一个com暴露的dll(我改变了指南),它是用regasm注册的。我必须使用下面的命令来取消注册程序集,然后我就可以成功地构建项目。

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

另外,如果你改变了GUID,你需要确保你在汇编.cs中使用的GUID与你的类中使用的GUID不一样。我在类声明和汇编中都使用了相同的GUID,这也会导致相同的错误。


1
投票

在我的例子中,出现这个错误是因为我通过regsvr32手动注册了一个COM-server。当我后来移动包含dll的文件夹时,我忘记了更新注册表(即取消注册并重新注册COM-server)。

重新注册服务器后,错误就解决了。


1
投票

我也遇到了一模一样的问题。 通过将目标平台从x86改为Any CPU,问题就神奇地解决了。

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