2011-09-29 32 views
2

我正在構建一個應用程序,該應用程序使用Oracle.DataAccess.dll連接到數據庫來完成一些工作。由於JIT加載,數據庫訪問不需要執行應用程序的90%,並且應用程序可以正常加載,而無需dll。但是,當它不存在時訪問使用dll的應用程序的特定部分時,它會崩潰。當組件缺失時禁用應用程序功能

我希望能夠主動禁用訪問該表單,當DLL丟失,是否有任何方式來檢測應用程序加載時的DLL?

更新:

我能找到做

if (!File.Exists("Path to Oracle.DataAccess.dll")) 
{ 
    toolStripMenuItem.Enabled = false; 
} 

一個潛在的解決方案有沒有更好的辦法了嗎?

+0

由於您正在動態加載程序集,爲什麼不在該程序集加載時動態構建指向該部分應用程序的鏈接? –

+0

我想我應該澄清,該組件在設計時被定義爲項目參考。通過C#自己的JIT加載,負載實際上被推遲到需要時。 – iterion

回答

2

你可以試試Assembly.Load看它是否有效;否則,也許GetLoadedModules可能會做你所需要的。路徑搜索不會起作用,因爲它會排除GAC和其他地方的程序集。

相關問題