You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

从typelib生成存根实现:寻求C#存根类生成工具

生成C#存根类替换TypeLib实现的实用工具与方法

嘿,我刚好处理过类似的需求,下面这些官方工具和实操步骤应该能帮你快速搞定:

1. 微软官方工具:Tlbimp.exe(Type Library Importer)

这是.NET SDK自带的原生工具,专门用来把COM类型库(.tlb)转换成C#托管互操作程序集,生成的类/接口就是你需要的存根。

基本命令用法

打开命令提示符(或者.NET CLI终端),运行:

tlbimp YourTypeLib.tlb /out:YourStubAssembly.dll /namespace:Your.Custom.Namespace
  • /out:指定生成的C#程序集文件名
  • /namespace:给生成的类型指定自定义命名空间,避免冲突
  • 额外参数:如果需要更严格的类型检查,可以加/strictref;如果要生成主互操作程序集(Primary Interop Assembly),可以加/primary

生成的程序集里,你会看到对应typelib的接口、类和枚举,这些就是可用于重写的存根。你可以直接实现这些接口,或者继承生成的类(如果类标记为virtual或可继承)来替换原逻辑。

2. Visual Studio 内置可视化操作

如果你不想敲命令行,VS提供了更直观的方式:

  • 右键你的C#项目 → 「添加」→ 「引用」
  • 在弹出的窗口里选择「浏览」,找到你的.tlb文件并添加
  • VS会自动调用Tlbimp.exe在后台生成互操作程序集,并添加到项目引用中

这种方式适合快速测试,生成的存根代码和命令行方式一致。

替换原TypeLib实现的思路

生成存根后,你可以:

  • 创建新的C#类,实现存根里的接口,编写自己的业务逻辑
  • 如果原typelib是COM组件,你可以把新的C#类注册为COM组件(用regasm.exe),替换原组件的CLSID绑定
  • 在.NET环境中直接使用你的新实现类,替代原互操作程序集里的类型

额外提示

如果需要高度定制化的存根代码(比如调整命名、修改类型映射),可以考虑:

  • 用TlbImp2(第三方增强版工具,功能比原生Tlbimp更灵活)
  • 编写T4模板,解析typelib元数据后生成自定义的C#存根代码

内容的提问来源于stack exchange,提问作者code_onkel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 07:21:36