2008-12-10 63 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。

编辑1:如果您在Web应用程序中使用它,请在web.config中设置连接字符串。

编辑2:如果设置在.exe.config或web.config中您可以使用访问它的connectionStrings节的连接字符串:

ConfigurationManager.ConnectionStrings("MyConnectionString") 
+0

我有一个使用此库的web应用程序 – Developer 2008-12-10 15:59:42

+0

@RB - 要访问存储在web.config文件中的连接,我必须将它从Web应用程序传递到类库。我不能更改类库中方法的签名,因为它是遗留代码,并且正在从其他Web应用程序中使用,而我无法控制它。 – Developer 2008-12-10 16:04:16

1

配置文件是特定于应用程序。因此,如果应用程序使用您的DLL,则app.config或web.config需要具有要在DLL配置中使用的条目。

不幸的是,“不是一种选择”可能是正确的选择。

1

我们有多个具有相同要求的库。我们设置它以便我们的类库直接从使用它的应用程序的web.config文件中检索连接字符串。当你说:

从网页传递的连接字符串 类库 使用它的方法不是一个选项。

理论上,网页并未传递参数作为参数,但类库只是直接从web.config文件中取出。