2008-12-10 64 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文件中取出。