簡體   English   中英

在C#COM項目中,我應該引用DLL還是TLB? (主要是SolidWorks)

[英]In C# COM projects, should I reference DLLs or TLBs? (Mainly SolidWorks)

我正在為SolidWorks構建C#插件,但似乎找不到關於要在我的項目中引用哪些文件的明確答案。 我在以前的項目中使用過.DLL ,在本項目中使用過.TLB 特別是對於SolidWorks,我更喜歡TLB,因為函數的定義是隨它們的實際返回類型一起提供的,而不僅僅是dynamic因此我不必在SolidWorks的文檔中進行查找。 但是,在我發現的所有視頻和網站中,似乎沒有人在使用TLB。 SolidWorks的docs網站並不是那么有用,因為它到處都是,解釋也很乏味。

早期和晚期綁定的文檔說,TLB僅用於早期綁定。

這里的頁面說TLB用於C ++ / CLI,VB .NET和VBA。 沒有提到C#。 另一頁(目前找不到)顯示了使用TLB而不是DLL的代碼,但其他所有人似乎都在使用DLL。

我實際上應該使用什么? 除了早期/后期綁定和dynamic之外,有什么區別(對於SolidWorks和一般COM東西)?

當您添加tlb時,它會轉換為幕后的互操作dll,因此與添加dll幾乎相同,但是有一個主要區別。 這些互操作程序將沒有強名稱,因此,將來與DLL互操作程序(具有強符號)不同,您可能會在兼容性方面遇到麻煩。

我也建議不要使用“嵌入互操作類型”選項。 在這種情況下,您將沒有動力學,可以使用方法的I版本訪問API的類型安全版本。

總結:添加互操作dll(從.NET選項卡),將所有SOLIDWORKS互操作的'嵌入互操作類型'選項設置為False。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM