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

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

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

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

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

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

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

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

Я перечислил образец ниже, вот как я хотел бы получить доступ к строке.

    Открытая функция getsettings (ByVal Setting As String) как String
        Если настройка = "Демо", то
            Вернуться My.Settings.Demo
        еще
            Вернуться My.Settings.Live
        End If
    Конечная функция
10.12.2008 15:54:27
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")
3
10.12.2008 15:57:33
У меня есть веб-приложение, которое использует эту библиотеку
Developer 10.12.2008 15:59:42
@RB - Чтобы получить доступ к соединению, хранящемуся в файле web.config, мне нужно было бы передать его в библиотеку классов из веб-приложения. Я не могу изменить сигнатуру методов в библиотеке классов, так как она является устаревшим кодом и используется из других веб-приложений, которые я не контролирую.
Developer 10.12.2008 16:04:16
Я попытаюсь использовать метод в «РЕДАКТИРОВАТЬ 2»
Developer 10.12.2008 16:06:07
@ Ник - Это неправильно. Ваша библиотека может получить доступ к настройкам в файле Web.Config, используя приведенный мною код.
RB. 10.12.2008 16:06:34

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

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

1
10.12.2008 15:58:15

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

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

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

1
10.12.2008 16:03:16
Жаль, что SO не позволяет помечать несколько ответов как «правильные». Вы и РБ оба правы. Благодарю вас.
Developer 10.12.2008 16:12:13