我正在尝试构建我的项目,当项目构建并且勾选“注册COM互操作”属性时,我突然开始收到以下错误。
程序集“c:\ MyAssembly.dll”无法转换为类型库。类型库导出器在处理'SomeType,MyAssembly'时遇到错误。错误:引用类型在托管组件中定义,托管组件是从无法加载的类型库导入的(类型:'OtherType';组件:'c:\ OtherAssembly.dll')。
团队中没有其他人得到这个错误,只是我!显然,我已经为我的机器做了一些奇怪的事情,但是完全删除/删除和重新添加我能想到的所有内容的蛮力方法没有任何区别,所以我不得不真正理解这个错误(多么拖累!)< / p>
所以:
答案 0 :(得分:2)
我有这个问题。我刚刚做了同样的事情,gactutil /u
(用于卸载)和gacutil /i
(用于安装)问题已解决
答案 1 :(得分: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,则需要确保您的NOT在您在班级中使用的assembly.c中使用相同的GUID。我在类声明和汇编中使用了相同的GUID,这也导致了相同的错误。
答案 2 :(得分:1)
在我的情况下,发生此错误是因为我通过regsvr32手动注册了COM服务器。当我稍后移动包含dll的文件夹时,我忘记更新注册表(即取消注册并重新注册COM服务器)。
重新注册服务器修复了错误。
答案 3 :(得分:1)
我有完全一样的问题。通过将目标平台从x86更改为Any CPU,神奇地修复了该问题