【问题标题】:VB .NET (.NET 2.0) Class Library configurationVB .NET (.NET 2.0) 类库配置
【发布时间】:2009-06-26 06:59:50
【问题描述】:

我在 VB .NET 中创建了一个类库。库中的一些代码连接到数据库。我想创建一个包含连接字符串的配置文件。

我创建了一个“Settings.settings”文件并将连接字符串存储在其中。

构建具有设置文件的类库时,它会生成一个“.dll.config”文件,该文件具有在设置文件中定义的键值对。

问题是当我更改“.dll.config”文件中的连接字符串时,库不引用这些更改。我仍然需要重新编译类库,然后它会覆盖我在 .dll.config 文件中的更改。

我需要能够即时更改连接字符串,而无需重新编译库。

VB.NET 类库 (.NET 2.0) 中是否有一种机制可以让我这样做?

将连接字符串从使用其方法的网页传递到类库不是一种选择。

我在下面列出了一个示例,这就是我访问字符串的方式。

公共函数 getsettings(ByVal Setting As String) As String 如果设置=“演示”然后 返回 My.Settings.Demo 别的 返回 My.Settings.Live 万一 结束功能

【问题讨论】:

    标签: vb.net configuration class-library


    【解决方案1】:

    如果您的应用程序使用名为 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")
    

    【讨论】:

    • 我有一个使用这个库的网络应用程序
    • @RB - 要访问存储在 web.config 文件中的连接,我必须将其从 Web 应用程序传递给类库。我无法更改类库中方法的签名,因为它是遗留代码,并且正在被我无法控制的其他 Web 应用程序使用。
    • 我会尝试使用“EDIT 2”中的方法
    • @Nick - 这是不正确的。您的库可以使用我提供的代码访问 Web.Config 文件中的设置。
    【解决方案2】:

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

    不幸的是,“不是一个选项”可能是正确的选项。

    【讨论】:

      【解决方案3】:

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

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

      理论上,网页不会将 con str 作为参数传递,而类库只是直接从 web.config 文件中获取它。

      【讨论】:

      • SO 不允许将多个答案标记为“正确”,这太糟糕了。你和RB都是对的。谢谢。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-04-27
      • 2018-02-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多