如果直接用插件ISwAddin的方式開發,發現調試的時候總是重新打開了一個sw進程,所以用EXE的方式開發調試更方便。但是程序完成,做成安裝包發給別人安裝后報錯:
“System.Runtime.InteropServices.COMException (0x80040154): 檢索 COM 類工廠中 CLSID 為 {13551C8B-F74D-493E-B550-489532B7A905} 的組件失敗,原因是出現以下錯誤: 80040154 沒有注冊類 (異常來自 HRESULT:0x80040154 (REGDB_E_CLASSNOTREG))。”
幾經折騰,終於明白是自己new的姿勢不對:
//iSwApp = new SldWorks();//這樣new在別人的機器上會報錯! iSwApp = (SldWorks)Activator.CreateInstance(Type.GetTypeFromProgID("SldWorks.Application")); // //SldWorks.Application.26 = sw 2018 //iSwApp = (SldWorks)Activator.CreateInstance(Type.GetTypeFromProgID("SldWorks.Application.26"));
參考文章:
C#:DLL已注冊,但COM錯誤80040154仍然出現(C#: DLL is registered but COM error 80040154 still appear)
https://www.it1352.com/1836106.html
