C#开发的COM服务器无法被客户端C#项目正常引用求助
可行解决方案
- 校验架构匹配与regasm版本一致性
COM服务器与客户端的目标架构必须完全统一,要么同为x86,要么同为x64,禁止使用Any CPU配置。系统默认调用的regasm版本可能与项目目标架构不匹配,需在生成事件中显式指定对应架构的regasm路径:32位版本位于C:\Windows\Microsoft.NET\Framework\对应.NET版本号\regasm.exe,64位版本位于C:\Windows\Microsoft.NET\Framework64\对应.NET版本号\regasm.exe。 - 补全regasm注册参数
当前自动注册大概率缺少必要参数,需在regasm命令后追加/codebase /tlb:你的程序集名称.tlb。/codebase会在注册表中写入程序集的绝对路径,避免COM运行时定位程序集失败;/tlb会导出并注册类型库文件,这是COM引用能被其他项目正确识别的必要条件。 - 验证COM注册与权限
确保运行Visual Studio时使用管理员权限,否则regasm的注册表写入操作会被系统静默拦截,看似注册成功实际未写入对应表项。注册完成后可以打开注册表编辑器,搜索你定义的接口与类GUID,确认两个GUID都存在对应的注册表项。 - 调整客户端引用配置
删除现有异常的COM引用,改为手动导入生成的tlb文件:右键客户端项目→添加引用→浏览→选中生成的.tlb文件。进入引用属性页,先尝试将「嵌入互操作类型」设置为True,如果仍无法调用则改为False,同时手动添加stdole程序集引用即可。
内容的提问来源于stack exchange,提问作者Alex B.
相关产品推荐
相关产品推荐

