入門:使用SolidWorks API開發(fā)應(yīng)用程序
SolidWorks?API可用于任何兼容 COM 的語言(即 C++、C#、VB.NET 和 Visual Basic)??梢允褂?SolidWorks?API開發(fā)不同類型的應(yīng)用程序。請參閱下面的比較表,以選擇適合要求的正確應(yīng)用類型。

.NET 項(xiàng)目的參考
SolidWorks?是一個(gè)基于 COM 的應(yīng)用程序,因此當(dāng)從 .NET 應(yīng)用程序使用 SolidWorks?API 時(shí),需要添加程序集互操作以實(shí)現(xiàn)與 COM 的通信。
獲取所需類型庫的一般有兩種方法。
COM 類型庫
通過將類型庫 (*.tlb) 文件的引用直接添加到 .NET 項(xiàng)目 (sldworks.tlb, swconst.tlb, swpublish.tlb)。這可以通過瀏覽相應(yīng)的類型庫文件或在 COM 選項(xiàng)卡中查找注冊的引用來完成。這些步驟等效于使用 tlbimp(類型庫導(dǎo)入程序,https://learn.microsoft.com/zh-cn/dotnet/framework/tools/tlbimp-exe-type-library-importer),因?yàn)?Visual Studio 將在后臺將類型庫轉(zhuǎn)換為互操作。轉(zhuǎn)換后的等效 .NET 互操作將在項(xiàng)目中使用。

主互操作程序集 (PIA)
通過添加隨 SolidWorks?安裝一起提供的互操作程序集(SolidWorks.Interop.sldworks.dll、SolidWorks.Interop.swconst.dll、SolidWorks.Interop.swpublish.dll)。這些類型的互操作稱為主互操作程序集 (PIA)?;ゲ僮鲙煳募挥谝韵履夸浿?,SolidWorks?安裝文件夾\api\redist(面向框架 4.0 及更高版本的項(xiàng)目)和 SolidWorks?安裝文件夾\api\redist\CLR2(面向框架 2.0 和 3.5 的項(xiàng)目)。
對于面向框架 4.0 的項(xiàng)目,我建議將“嵌入互操作類型(https://learn.microsoft.com/zh-cn/dotnet/framework/interop/type-equivalence-and-embedded-interop-types)”選項(xiàng)設(shè)置為 False。否則,由于類型轉(zhuǎn)換問題,在調(diào)用 SolidWorks?API 時(shí),應(yīng)用程序可能會出現(xiàn)不可預(yù)測的行為,但是這種情況在極少數(shù)情況下會發(fā)生。
差異
區(qū)別之一是名稱和命名空間不同。對于從類型庫生成的互操作,默認(rèn)命名空間為 SldWorks、SWPublished 等(可以使用 tlbimp 實(shí)用程序更改默認(rèn)命名空間),而命名空間名稱中的 SldWorks.Interop 前綴在其他情況下使用。
但還有另一個(gè)主要區(qū)別。
從 COM 類型庫生成的互操作不是強(qiáng)類型名稱(https://learn.microsoft.com/zh-cn/dotnet/standard/assembly/create-use-strong-named)。

而隨 SolidWorks?安裝一起提供的主互操作程序集(PIA)是強(qiáng)類型名稱。

如果您正在構(gòu)建進(jìn)程外獨(dú)立應(yīng)用程序(https://www.codestack.net/solidworks-api/getting-started/stand-alone/)(除非您的 *.exe 支持插件機(jī)制并且可以加載引用 SolidWorks?互操作的庫),則幾乎沒有區(qū)別,但如果多個(gè)加載項(xiàng)引用不同版本的未簽名(非強(qiáng)名稱)互操作,則可能會導(dǎo)致進(jìn)程內(nèi)加載項(xiàng)應(yīng)用程序(https://www.codestack.net/solidworks-api/getting-started/add-ins/)出現(xiàn)重大問題。這個(gè)視頻(P1)中也展示了類似的問題。

最佳實(shí)踐
使用安裝附帶的主互操作程序集 (PIA),避免使用 COM 類型庫。
不要直接從安裝文件夾引用互操作。這將導(dǎo)致在互操作未放在同一目錄中或未添加到 GAC 的其他計(jì)算機(jī)上編譯項(xiàng)目時(shí)失敗。特別地,這將不利于實(shí)施持續(xù)集成/持續(xù)交付 (CI/CD,https://blog.xarial.com/ci-cd/)。
最好是將互操作放在 NuGet 服務(wù)器上(https://www.nuget.org/),并將其添加為包。您可以使用內(nèi)部托管服務(wù)器或使用公共服務(wù)器。
如果上述選項(xiàng)不可行,則將庫添加到與項(xiàng)目相同的文件夾中(例如,在解決方案 *.sln 文件旁邊創(chuàng)建文件夾 threepty 并在其中復(fù)制互操作)并瀏覽此文件夾中的互操作以添加相對路徑引用。
文章翻譯自https://www.codestack.net/
僅供學(xué)習(xí)使用。