Конфигурация библиотеки классов VB .NET (.NET 2.0)

Я создал библиотеку классов в VB .NET. Некоторый код в библиотеке подключается к базе данных. Я хочу создать файл конфигурации, который будет содержать строку подключения.

Я создал файл "Settings.settings" и сохранил там строку подключения.

Когда создается библиотека классов с файлом настроек, создается файл ".dll.config", в котором пары "ключ-значение" определены в файле настроек.

Проблема в том, что когда я меняю строку подключения в файле «.dll.config», библиотека не ссылается на эти изменения. Мне все равно нужно будет перекомпилировать библиотеку классов, которая затем перезапишет мои изменения в файле .dll.config.

Мне нужна возможность изменять строки подключения на лету без перекомпиляции библиотеки.

Есть ли в библиотеке классов VB.NET (.NET 2.0) механизм, который позволил бы мне это сделать?

Передача строки подключения в библиотеку классов с веб-страницы, использующей ее метод, невозможна.

Я привел пример ниже, вот как я могу получить доступ к строке.

    Public Function getsettings(ByVal Setting As String) As String
        If Setting = "Demo" Then
            Return My.Settings.Demo
        Else
            Return My.Settings.Live
        End If
    End Function

person Developer    schedule 10.12.2008    source источник


Ответы (3)


Если у вас есть приложение, которое использует вашу библиотеку под названием MyApp, то строка подключения, определенная в MyApp.exe.config, будет доступна для вашей библиотеки. Вообще говоря, клиентская программа должна устанавливать среду конфигурации, а не библиотеку.

If GetApplicationSetting("connectionString") Is Nothing Then
    Throw New Exception("Could not retrieve connection string from .config file")
Else
    Return ConfigurationManager.AppSettings.Item("connectionString")
End If

Убедитесь, что у вас загружена платформа System.Configuration для доступа к ConfigurationManager.

РЕДАКТИРОВАТЬ 1: Если вы используете его в веб-приложении, установите строку подключения в web.config.

РЕДАКТИРОВАТЬ 2: Если вы установите строку подключения в разделе ConnectionStrings файла .exe.config или web.config, вы можете получить к ней доступ, используя:

ConfigurationManager.ConnectionStrings("MyConnectionString")
person RB.    schedule 10.12.2008
comment
У меня есть веб-приложение, которое использует эту библиотеку - person Developer; 10.12.2008
comment
@RB - Чтобы получить доступ к соединению, хранящемуся в файле web.config, мне пришлось бы передать его в библиотеку классов из веб-приложения. Я не могу изменить сигнатуру методов в библиотеке классов, так как это устаревший код, который используется в других веб-приложениях, которые я не могу контролировать. - person Developer; 10.12.2008
comment
Я попробую использовать метод в РЕДАКТИРОВАТЬ 2 - person Developer; 10.12.2008
comment
@Ник - это неправильно. Ваша библиотека может получить доступ к настройкам в файле Web.Config, используя предоставленный мной код. - person RB.; 10.12.2008

Файлы конфигурации специфичны для приложения. Поэтому, если ваша DLL используется приложением, в файле app.config или web.config должны быть записи, которые вы пытаетесь использовать в конфигурации DLL.

К сожалению, "Не вариант", вероятно, правильный вариант.

person StingyJack    schedule 10.12.2008

У нас есть несколько библиотек с одинаковыми требованиями. Мы настроили его так, чтобы наша библиотека классов напрямую извлекала строку подключения из файла web.config приложения, которое ее использует. Когда ты говоришь:

Передача строки подключения в библиотеку классов с веб-страницы, использующей ее метод, невозможна.

Теоретически веб-страница не передает параметр const в качестве параметра, но библиотека классов просто берет его напрямую из файла web.config.

person Victor    schedule 10.12.2008
comment
Жаль, что SO не позволяет помечать несколько ответов как правильные. Вы и РБ оба правы. Спасибо. - person Developer; 10.12.2008