Dll 參考路徑問題

leon
請問大大

目前我只知道只要把EXE 與 Dll 放在同一個目錄下EXE 會自己去參考

那如果是EXE 和DLL 沒有放在同一個目錄下
但是DLL 有固定在某處 如 C:\Dll 資料夾中

請問在EXE需怎麼設定 讓EXE 可以參考C:\Dll\*.dll
EXE 在編譯的時候 也不會自己把DLL 抓到BIN底下呢?

我不曉得這樣問大大有沒有能夠想像我的環境
需要補充再請多多指教

謝謝

最有價值解答

P陳
請參考這個討論串,您的想法跟這篇雷同

執行時才載入DLL
QB
一 如果開發時不需要參考 dll (你參考的是不同 dll 中的介面或基底類別, 載入的是介面實作或衍生類別), 請自行用 Assembly.Load() LaodFrom() LoadFile() 系列方法取得 Assembly, 再從 Assembly 取得 Type, 再用 Type 建立物件, 可參考上一樓

二 如果開發時要參考該 dll
1. 開發時, 專案加參考後請在參考的屬性頁面將"複製到本機"改成 false 就不會在編譯時自動複製到 bin => 但會造成 runtime 找不到 dll, 所以
2. 要處理 AppDomain.AssemblyResolve 事件, 這是在.NET 從 exe 檔所在目錄找不到參考組件時觸發, 你在這個事件中自行用 Assembly.Load() 之類的方法取得 Assembly 回傳,

進階應用 : 把 dll 集中在 web server 發行管理, exe 用 ClickOnce 部署, runtime 用 WebClient 下載檔案到 MemoryStream 再用 Assembly.Load(byte[]) 載入 dll
回到頂部