Проверка существования Oracle.DataAccess - PullRequest
3 голосов
/ 16 декабря 2011

Я хочу проверить, установлена ​​ли правильная версия драйвера Oracle, и ее можно найти до запуска приложения, чтобы я мог отобразить сообщение об ошибке и выполнить изящный сбой. Это приложение C # Windows Forms.

Когда я запускаю приложение на машине, которая не имеет правильной версии Oracle, я получаю следующее сообщение, и приложение остается в подвешенном состоянии:

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.

Как я могу надежно проверить, доступна ли эта сборка?

Ответы [ 2 ]

0 голосов
/ 22 июля 2015

Вы можете использовать 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;
        }
    }
0 голосов
/ 17 декабря 2011

В дополнение к вашему собственному ответу вы также можете сделать это в общем виде (для всех проблем с загрузкой сборок), используя событие 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");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...