我們運行一個用C#.NET 3.5編寫的複雜系統,包含20多個網站,10多個Windows服務以及各種計劃任務和輔助應用程序。處理多個配置文件實例的最佳方法?
其中每個都與我們的一個或多個框架和業務邏輯DLL捆綁在一起。 這些DLL有大量的配置設置,這已經變成了一場噩夢,我們爲相同類庫的多個實例維護了超過40個配置文件。
由於各種原因,我們不會在GAC註冊我們的DLL: 1)我們喜歡在不重建整個系統或導致不必要的停機時間的情況下快速推出對選擇性項目的更改的靈活性。 2)某些DLL的實例需要略微不同的配置;例如一些項目使用不同的連接字符串,通知電子郵件地址等。
我們使用Web.config/App.config中的AppSettings file/configSource屬性進行了實驗,但這些屬性僅適用於相對路徑,不適用於項目。 我們考慮將默認值保存在machine.config中,但這是一項任務,太雜亂,充滿了與我們項目無關的重要內容。
我們當前的「解決方案」是使用我們自己的配置文件格式,它首先檢查當前項目的「bin」文件夾中的配置,如果不存在,則從硬編碼的中央位置加載。這允許我們在必要時覆蓋設置,但在其餘時間使用默認設置。
我們最終想要的是在一箇中心位置的每個類庫的默認設置,然後每個實例可以有一個可選的配置文件,該文件只覆蓋那些與默認不同的設置。
在.NET中有沒有一種建議的,行業標準的解決這個問題的方法?
我可以聲稱沒有這方面的專業知識,但這不是什麼註冊表是什麼?我相信它有它自己的問題,但想知道它是否應該被視爲解決方案? – 2010-01-08 01:47:52
做所有這些運行在同一臺服務器上? – Amirshk 2010-01-08 01:57:17
(免責聲明:這件事情我寫的):有一個類似的線程上此:http://stackoverflow.com/questions/1987013/how-to-setup-web-config-for-build-to-multi-environments- without-code-changes/2024921#2024921,我寫了一篇關於我寫在那裏的工具,這可能也會幫助你。 FWIW。 – 2010-01-08 02:09:36