首页 > 解决方案 > 在 C# COM 项目中,我应该引用 DLL 还是 TLB?(主要是SolidWorks)

问题描述

我正在为 SolidWorks 构建一个 C# 插件,但我似乎找不到任何关于在我的项目中引用哪些文件的明确答案。我.DLL在以前的项目中使用过 s,.TLB在这个项目中使用过 s。特别是对于 SolidWorks,我更喜欢 TLB,因为函数的定义提供了它们的实际返回类型,而不是仅仅dynamic为了让我不必在 SolidWorks 的文档中查找它。然而,在我发现的所有视频和网站中,似乎没有人使用 TLB。SolidWorks 的文档站点没有那么有用,因为它到处都是,而且解释也很乏味。

Early and Late Binding文档说 TLB 仅用于早期绑定。

这里的这个页面说 TLB 用于 C++/CLI、VB .NET 和 VBA。没有提到C#。这另一页(现在找不到)显示了使用 TLB 而不是 DLL 的代码,但其他人似乎都在使用 DLL。

我实际上应该使用什么?除了早期/晚期绑定和之外,有什么区别(对于 SolidWorks 和一般 COM 东西)dynamic

标签: c#.netcomcom-interopsolidworks

解决方案


添加 tlb 时,它会在后台转换为互操作 dll,因此它与添加 dll 几乎相同,但有一个主要区别。这些互操作不会有强名称,因此您将来可能会遇到兼容性问题,这与强签名的 dll 互操作不同。

我还建议不要使用“嵌入互操作类型”选项。在这种情况下,您将没有动态并且可以使用方法的 I 版本来访问 API 的类型安全版本。

作为总结:添加互操作 dll(从 .NET 选项卡),将所有 SOLIDWORKS 互操作的“嵌入互操作类型”选项设置为 False


推荐阅读