我有一個類似的應用程序,它適用於從2006年到2013年(x86和x64)的autocad和bricscad v12-v13。
爲了解決這個問題,我爲每個架構都做了一個visual studio項目,每個項目都根據autocad版本引用不同的.dll文件。特別是那些項目中的每一個都指AcDbMgd.dll, AcMgd.dll, Autodesk.AutoCAD.Interop and Autodesk.AutoCAD.Interop.Common
,這些dll是針對每個autocad體系結構特定的。
您必須注意所有引用的dll都是複製本地FALSE!
在我的情況下,所有的項目都編譯在不同的文件夾中,但如果您爲每個項目分配不同的程序集名稱,則不是強制性的。
由於AutoCAD API與2006年至2012年相同(2013年有一些差異),因此將源代碼從這些項目中分離出來,每個項目都將其作爲鏈接源文件包含在內(轉到解決方案資源管理器 - >右鍵單擊 - >添加現有項目 - >選擇源文件,然後按「添加爲鏈接」)。通過這種方式,您可以爲所有項目使用相同的源代碼,但編譯時會包含不同的autocad dll。
在我的情況下,也存在一些麻煩,因爲BricsCAD在AutoCAD方面有時會有不同的API。爲了解決這個少數情況下,我設置了一個條件編譯符號,並用它像這樣:
#if BricsCad
CADAPI.ApplicationServices.Application.SystemVariableChanged += new CADAPI.ApplicationServices.SystemVariableChangedEventHandler(Application_SystemVariableChanged);
#else
CADDB.LayoutManager.Current.LayoutSwitched += new CADDB.LayoutEventHandler(Current_LayoutSwitched);
#endif
告訴我,如果你需要更多的信息。順便說一句我認爲你的主要問題是autocad Dll的copy local = true。
「原始Android」感謝您的回覆,我會請求您的幫助,這取決於您的幫助與否,但我需要它。需要一些信息如何使用GUID顯式加載DLL.by再次感謝。 – shamim