2011-12-16 181 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; 
     } 
    }