2012-01-13 104 views
2

我在C#4解決方案中有三個項目。我應該如何組織我的c#解決方案?

  • MooDB:有我的域對象中,NHibernate的映射,呈現類。
  • 數據:有我的數據訪問層類(使用NHibernate)
  • 測試:有我的測試類

以下是截圖:

enter image description here

我已經注意到我在Test項目中有app.confighibernate.cfg.xml。這看起來沒錯。我的Data項目中沒有app.config這是一個問題,因爲我想在我的Data項目中使用log4net,但如果沒有app.config那麼我無法對其進行配置。

設置我的解決方案的最佳方式是什麼?是否應該爲每個項目或整個解決方案提供app.config?我需要一個用於我的Test項目嗎?我是否按照「最佳實踐」來組織它?

+1

我傾向於在主機應用程序的'app.config'中放置連接字符串等設置,並將這些設置傳遞給類庫(本例中爲'Data')。使類庫依賴於特定於應用程序的外部資源是一個糟糕的主意。 – 2012-01-13 16:11:50

回答

3

我通常在最高層看到配置文件;這通常是用戶界面或測試。

這對我來說是有意義的(至少對我來說),因爲應用程序正在將數據層指向它應該從中獲取數據的存儲庫。您的測試圖層可能會與您的生產應用程序不同,所以在Data項目中配置對我來說沒什麼意義......它是「配置」底層的頂層。

1

如果您希望單個地方進行配置更改,您可以配置主項目中的文件並使用post-build events將生成的輸出文件複製到其他可執行項目的bin文件夾中。

您需要考慮在主應用程序中使用的配置是否與您希望在單元測試中使用的配置相同。如果沒有,那麼單獨的配置文件是絕對沒問題的。

+0

讓我感到困惑的是我不確定何時讀取配置文件。如果我右鍵單擊RepoTests.cs並運行所有測試,哪些配置文件被讀取?如果'Test'引用'Data','Test'項目中的一個或者其他配置文件也會被讀取? – 2012-01-13 16:13:10

+1

讀取的配置文件與正在運行的可執行文件(或測試)項目相關。這是一個常見的SO問題(http://stackoverflow.com/questions/594298/c-sharp-dll-config-file),但是當您考慮運行生產應用程序時想要使用的log4net配置是可能與您在測試時想要的不同。這就是配置在配置文件中而不是在代碼中完成的原因。 – 2012-01-13 16:16:43

+0

好的,很有道理謝謝 – 2012-01-13 16:22:12

相關問題