2012-06-21 35 views
0

要構建一個Autocad應用程序,我使用C#4.0。如何在一個應用程序中使用相同名稱的dll

我的應用程序有兩個模塊一個用於2005年,另一個用於2010年autocad。它使用特殊的DLL的 autocad,但面臨一些困難完成它。所有應該是通用的2005年和2010年autocad因爲DLL具有相同的名稱,它是不可能的應用程序不同autocad versions.it創建問題autocad interop DLL的參考。幫助我使用不同的模塊的不同的DLL。

  1. 應用有兩個模塊(2005,2010)
  2. 特殊的DLL
  3. 2005年和2010年的DLL具有相同的名稱。
  4. 應用程序無法區分dll
  5. 幫我在一個應用程序中使用不同的同名dll。

注意:在個別項目中,它們完美地工作。

需要幫助在一個應用程序中使用相同名稱的dll。

如有任何疑問,請提問,謝謝。

+1

「原始Android」感謝您的回覆,我會請求您的幫助,這取決於您的幫助與否,但我需要它。需要一些信息如何使用GUID顯式加載DLL.by再次感謝。 – shamim

回答

0

我有一個類似的應用程序,它適用於從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。

相關問題