2011-12-16 120 views
3

我想檢查是否安裝了正確版本的Oracle驅動程序,並且可以在應用程序運行之前找到它,以便我可以顯示錯誤消息並正常失敗。這是一個C#窗體表單應用程序。檢查是否存在Oracle.DataAccess

當我運行沒有甲骨文的正確版本的計算機上的應用程序,我碰到下面的信息和應用程序保留在掛起狀態:

Could not load file or assembly 'Oracle.DataAccess, Version=2.112.1.0, Culture=neutral, PublicKeyToken=89b483f429c47342' or one of its dependencies. The system cannot find the file specified. 

我如何可靠地檢查如果這個組件可用?

+0

也許今天我到了類似的問題的回答可以幫助:http://stackoverflow.com/questions/8531475/oracle-dataaccess-dll-can-not-be-located-though-it-exists/8531874 #8531874 – Codo 2011-12-16 14:54:38

回答

0

此外,您自己的答案,你也可以使用AssemblyResolve事件以一般方式(對於所有裝配加載問題)執行此操作。下面是一個示例:

AppDomain.CurrentDomain.AssemblyResolve += (sender, prms) => { 
    Console.WriteLine("Could not load assembly \"{0}\".", prms.Name); 
    Console.ReadLine(); 
    Environment.Exit(1); 

    return null; 
}; 

Assembly.Load("this asembly does not exist"); 
0

您可以使用System.Data.Common.DbProviderFactories實現相同。 下面的示例代碼可以檢查它。

private bool checkSpecifiedProviderExists() 
    { 
     var connectionStringSettings = ConfigurationManager.ConnectionStrings["YourConnectionString"]; 
     var factory = DbProviderFactories.GetFactory(connectionStringSettings.ProviderName);  

     try 
     { 
      var dbConnection = factory.CreateConnection(); 
      if(dbConnection !=null) return true; 
       return false; 
     } 
     catch 
     { 
       return false; 
     } 
    }