2008-12-10 5 views
2

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

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

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

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

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

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

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

Я привел пример ниже, вот как я мог бы получить доступ к строке.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 

ответ

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.

EDIT 1: Если вы используете его в веб-приложении, установите строку подключения в web.config.

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

ConfigurationManager.ConnectionStrings("MyConnectionString") 
+0

У меня есть веб-приложение, которое использует эту библиотеку – Developer 2008-12-10 15:59:42

+0

@RB - Чтобы получить доступ к соединению, хранящемуся в файле web.config, мне нужно будет передать его в библиотеку классов из веб-приложения. Я не могу изменить подпись методов в библиотеке классов, поскольку она является устаревшим кодом и используется из других веб-приложений, которые я не контролирую. – Developer 2008-12-10 16:04:16

1

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

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

1

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

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

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

Смежные вопросы