在C#COM项目中,我应该引用DLL还是TLB? (主要是SolidWorks)

时间:2019-05-26 07:59:46

标签: c# .net com com-interop solidworks

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

Early and Late Binding的文档显示,TLB仅用于早期绑定。

This page here表示TLB适用于C ++ / CLI,VB .NET和VBA。没有提到C#。另一页(目前找不到)显示了使用TLB而不是DLL的代码,但其他人似乎都在使用DLL。

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

1 个答案:

答案 0 :(得分:1)

添加tlb时,它会转换为幕后的互操作dll,因此与添加dll几乎相同,但是有一个主要区别。这些互操作程序不会使用强名称,因此将来可能会遇到兼容性方面的麻烦,这与具有强签名的dll互操作程序不同。

我也建议您不要使用“嵌入式互操作类型”选项。在这种情况下,您将没有动态,可以使用I-versions of methods访问类型安全的API。

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