Конфигурация библиотеки классов 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
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
2
0
3 679
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 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.

Обновлено еще раз: Если вы установите строку подключения в разделе ConnectionStrings файла .exe.config или web.config, вы можете получить к нему доступ, используя:

ConfigurationManager.ConnectionStrings("MyConnectionString")

У меня есть веб-приложение, использующее эту библиотеку

Developer 10.12.2008 18:59

@RB - чтобы получить доступ к соединению, хранящемуся в файле web.config, мне пришлось бы передать его в библиотеку классов из веб-приложения. Я не могу изменить сигнатуру методов в библиотеке классов, поскольку это устаревший код, который используется другими веб-приложениями, над которыми я не контролирую.

Developer 10.12.2008 19:04

Я попробую использовать метод из "РЕДАКТИРОВАТЬ 2"

Developer 10.12.2008 19:06

@Nick - Это неправильно. Ваша библиотека может получает доступ к настройкам в файле Web.Config, используя код, который я дал.

RB. 10.12.2008 19:06

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

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

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

Passing the connection string to the class library from the web page that uses its method is not a option.

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

Очень жаль, что SO не позволяет пометить несколько ответов как «правильные». Вы и РБ правы. Спасибо.

Developer 10.12.2008 19:12

Другие вопросы по теме