2013-10-16 56 views
3

我有兩個DLL(sqlite),一個DLL是64位和其他32位DLL。是否有可能基於處理器架構動態添加引用? P/Invoke是我最後的選擇。任何幫助,將不勝感激!!在.NET中動態添加引用

示例代碼:

string pathToDll = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) + "\\x64\\System.Data.SQLite.dll"; 
Assembly assembly = Assembly.LoadFrom(pathToDll); 
AppDomain.CurrentDomain.Load(assembly.GetName()); 
+2

的[構建在Visual Studio中時有條件使用32/64位參考]可能重複(http://stackoverflow.com/questions/3832552/conditionally -use-32-64-bit-reference-when-building-in-visual-studio) – CodeCaster

+0

也許這對你有幫助。 http://stackoverflow.com/questions/3832552/conditionally-use-32-64-bit-reference-when-building-in-visual-studio/3833444#3833444 – progpow

+0

有人可能想編譯到任何架構,並運行在32/64上。當然,你可以通過好的安裝程序解決這個問題,但這可能不是重複的 – wiero

回答

6

是的,你可以從.NET4您可以使用Is64BitOperatingSystem環境屬性文件

Assembly.LoadFrom("MyAssembly.dll"); 

加載程序集。否則檢查IntPtr.Size而變化,根據運行架構

Cannot encrypt/decrypt SQLite database in .NET4

+0

我將如何使用dll方法,因爲我將動態添加引用? –

+0

我添加了一個鏈接到我的其他響應,這應該可以幫助你 – wiero

+0

我讀了關於assembly.loadfrom方法。它看起來像真正的交易,我明天會確認解決方案 –