我希望有人可以指出我正确的方向。我通过几个步骤列出了这个问题,希望能够澄清这个问题。
问题在于,当我使用 regasm / u 时,它表示“未成功注册”。但是,当我使用OLEVIEW检查COM中的typelib时, 仍然 显示了对GACed程序集的PrimaryInterop引用。
我也尝试过使用regasm / u / tlb,但我收到警告说:
RegAsm : warning RA0000 : Type library not un-registered since the assembly was
imported from COM
感谢您的帮助,因为这让我发疯;)
答案 0 :(得分:3)
步骤4错误,COM服务器已在步骤1中注册。只有在创建您自己的COM服务器([ComVisible]属性)时才使用Regasm.exe,而不仅仅是< em>使用一个。在步骤2中使用/ primary也是如此,当您公开在自己的公共接口中导入的COM类型时,只需要PIA。最好避免。通过重复步骤1来修复您可能造成的伤害。
由tlbimp.exe生成的互操作程序集只是一个小帮助程序集,它只包含从类型库自动生成的声明。帮助CLR为COM接口方法生成thunk,而无需解析类型库。如果您有该版本,请务必使用VS2010中提供的嵌入互操作类型功能。