2012-01-11 30 views
2

對於我們的應用程序,我們使用消息系統,在消息中使用消息中的信息我們可以使用動態反射來構建各種對象。這方面的一個簡化版本是:Assembly.LoadFrom在Windows 7中的行爲不同

if(Message.Control == "ControlA") 
    Assembly.LoadFrom("ControlsA.dll") 
else if (Message.Control == "ControlB") 
    Aseembly.LoadFrom("ControlsB.dll") 

一旦我們有裝配,我們然後根據需要調用各種方法。

目前的問題是,當我們在Windows 7安裝中使用此方法時,我們收到「無法加載文件或程序集」錯誤,其中報告爲搜索的路徑是應用程序所在的用戶桌面目錄通過快捷方式啓動(C:\ Users \ * user * \ desktop)。

我的問題是;爲什麼上面的方法在Windows 7中工作時沒有在Windows 7中查找DLL的應用程序路徑,我們是否應該做一些不同的事情?

回答

3

如何使用

Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) 

獲取當前執行代碼的路徑?當你有這個信息時,應該很容易找到你的圖書館。

+0

那麼你有什麼建議嗎? Assembly.LoadFrom(Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly()。Location),「ControlsA.dll」) – MrEdmundo 2012-01-11 10:10:20

+0

也許甚至GetEntryAssembly(),但這取決於您的應用程序 – yas4891 2012-01-11 10:10:51

+0

@MrEdmundo完全是 – yas4891 2012-01-11 10:11:41

相關問題