2012-01-19 28 views
0

我有一個問題。 我已經制定了解決方案,它是3層應用程序。所以我有3個項目是類庫,一個是Windows窗體應用程序,它將使用我開始所有這些並將它們連接在一起。問題是我有數據層app.config文件。如果我把它放在那個DLL裏,那我就看不懂它了。如果我把它放在主程序(Windows窗體應用程序)中,我仍然無法閱讀它。哪裏把app.config文件放在多個項目的解決方案中 - error

所以我的問題是在哪裏把app.config文件,所以我可以正常閱讀它?我正在從DLL讀取它。它必須是這樣,因爲它是3層應用程序,所有圖層都是獨立的。所以一個是數據層,buisness邏輯和表示層。

請幫助。

編輯:

好吧,我會通過一些代碼:

所以我從數據層app.config文件閱讀這樣的:

SqlConnection konekcija = new SqlConnection(ConfigurationManager.AppSettings["skripta"]); 

app.config文件在該類庫項目是:

<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
    <startup useLegacyV2RuntimeActivationPolicy="true"> 
    <supportedRuntime version="v4.0"/> 
    </startup> 
    <appSettings> 
    <add key="skripta" 
      value="Data Source=DENONTH-PC;Initial Catalog=rups;Integrated Security=True;Pooling=False" /> 
    </appSettings> 
</configuration> 

我已經在這個類librabry和Windows App.config中形成親ject並且仍然沒有正確引用它。

+0

您有什麼特例可以提供嗎? – Glenn

回答

7

通常我每個項目都有一個app.config,但實際值保存在主(通常是UI)應用程序的配置中。然後我創建了一些Core/Utility項目,並創建了一個負責公開配置鍵/值的類。 Core/Utility項目沒有依賴關係,但可以(並且!)被任何需要配置值的項目引用。它給了我一個非常簡單的抽象層,如果有一天我想切換到例如數據庫驅動配置。

所以最後:把所有內容放在windows窗體配置中。如果使用ConfigurationManager類,它應該可以從類庫完全訪問。

編輯#1: 首先,如果你想存儲和使用的連接字符串,做正確,這意味着:

<connectionStrings> 
    <add name="ConnString" connectionString="server..."/> 
</connectionStrings> 
代碼

ConfigurationManager.ConnectionStrings["ConnString"]; 
在App.config

立即嘗試。我很確定你做錯了什麼,因爲你的代碼應該工作。

+0

你的意思是像app.config文件的一切?我有一個解決方案和4個項目。一個是Windows窗體應用程序。其他的是類庫。我已經將app.config複製到windows窗體項目中,但仍然沒有任何內容... – Denonth

+0

如果您的類lib具有appsettings部分,並且您有密鑰/值,請確保在部署之前將它也放在主項目的應用程序中。配置。你如何閱讀價值觀? – IamDeveloper

+0

這是正確的,一個提示是將ConfigurationMangager包裝在某個自己的類中並使用一個接口來提高TTD能力。但這只是一些額外的好東西,而不是這個問題。 – Glenn

相關問題