我正在尝试构建我的项目,当项目构建并勾选 "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').
团队中没有人得到这个错误,只有我得到这个错误。 很明显,我在我的机器上做了一些奇怪的事情,然而,完全删除和重新添加所有我能想到的东西的蛮力方法没有任何区别,所以我不愿意真正理解这个错误(真是太拖沓了!)。
那么。
我也有这个问题。我也是这样做的。gactutil /u
(用于卸载)和 gacutil /i
(用于安装),问题就解决了。
在我的例子中,我有一个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,这也会导致相同的错误。
在我的例子中,出现这个错误是因为我通过regsvr32手动注册了一个COM-server。当我后来移动包含dll的文件夹时,我忘记了更新注册表(即取消注册并重新注册COM-server)。
重新注册服务器后,错误就解决了。
我也遇到了一模一样的问题。 通过将目标平台从x86改为Any CPU,问题就神奇地解决了。