我在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
答案 0 :(得分: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应用程序中使用它,请在web.config中设置连接字符串。
编辑2:如果在.exe.config或web.config的ConnectionStrings部分设置连接字符串,则可以使用以下命令访问它:
ConfigurationManager.ConnectionStrings("MyConnectionString")
答案 1 :(得分:1)
配置文件特定于应用程序。因此,如果应用程序使用了您的DLL,则app.config或web.config需要包含您尝试在DLL配置中使用的条目。
不幸的是,“不是一个选项”可能是正确的选择。
答案 2 :(得分:1)
我们有多个具有相同要求的库。我们进行了设置,以便我们的类库直接从正在使用它的应用程序的web.config文件中检索连接字符串。当你说:
将连接字符串传递给 来自网页的类库 使用它的方法不是一种选择。
理论上,网页没有将con str作为参数传递,但是类库只是直接从web.config文件中获取它。