7

對於大多數我的應用程序我使用iBatis.Net訪問數據庫/建模和log4Net的記錄。在這樣做的時候,我需要爲每個項目提供一些* .config文件。例如,對於一個簡單的應用程序,我需要有以下* .config文件:([的AssemblyName] [Extention]的.config)減少配置文件數量儘可能少

  • 的app.config
  • [的AssemblyName] .SqlMap.config
  • [的AssemblyName] .log4Net.config
  • [的AssemblyName] .SqlMapProperties.config
  • providers.config

當這些應用程序從開發到測試,以生產環境中,這些文件中包含的設置會根據環境而變化。

當每個項目有5-10個(或更多)支持可執行文件使得文件數量變得更加複雜時,基礎架構團隊(對不同環境進行部署的團隊)的工作負載變得相當高。我們還有一個配置文件被丟失或配置文件中輸入錯誤的風險很高。

什麼是避免這些風險的最佳方式是什麼?我應該將所有的配置文件合併成一個文件嗎? (這對iBatis是否可行?)我知道在Visual Studio 2010中,他們引入了這些配置文件的轉換,這些配置文件允許開發人員爲不同的環境設置所有設置,然後動態地(取決於構建啓動)配置文件得到更新到正確的版本。 (VS 2010 - transforms

感謝您的幫助,您可以提供。

回答

2

您可以通過增加配置部分

我使用log4net的,活動記錄和Ciphersafe在我的Web應用程序之一,並在我的網站改變主* .config文件(如web.config文件或App.config中) .config我有

<configuration> 
... 
<configSections> 
     <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/> 
      <section name="activerecord" type="Castle.ActiveRecord.Framework.Config.ActiveRecordSectionHandler, Castle.ActiveRecord" /> 
      <section name="cipherSafeConfigSection" type="Obviex.CipherSafe.AppConfigSectionHandler,CipherSafe" /> 
    </configSections> 
... 
</configuration> 

然後我有每個配置部分,例如對於log4net我有

<configuration> 
... 
<log4net> 
     <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender"> 
      <file value="Logs\\TimeRegWeb.log"/> 
      <appendToFile value="true"/> 
      <datePattern value="yyyyMMdd"/> 
      <rollingStyle value="Date"/> 
      <filter type="log4net.Filter.LevelRangeFilter"> 
       <acceptOnMatch value="true"/> 
       <levelMin value="DEBUG"/> 
       <levelMax value="FATAL"/> 
      </filter> 
      <layout type="log4net.Layout.PatternLayout"> 
       <conversionPattern value="%-5p %d %5rms %-22.22c{1} %-18.18M - %m%n"/> 
      </layout> 
     </appender> 
     <root> 
      <level value="DEBUG"/> 
      <appender-ref ref="RollingLogFileAppender"/> 
     </root> 
    </log4net> 
... 
</configuration> 

這樣我只有1個web.config文件。然後我在我的解決方案名稱ProjectFiles中創建了一個獨立的Project,其中包含我所有的外部程序集和配置文件。後來,當我做與Web應用程序文件更新我的解決方案在運營方面我複製有關的配置文件(測試或正式版)

2

另一種方式的要求是必須在構建創建配置文件,或者使用一些部署時間就像AWK腳本或XSLT結合包含每個環境的特定設置的單個文件一樣。

螞蟻插件,允許這一點,其他的構建工具可能做太多還是讓他們在使用以及公佈的API被堵塞。

例如,你可能有一個模板文件中讀取類似

[email protected]@dbUri 
[email protected]@dbUser 
[email protected]@dbCredentials 

,併爲每個環境文件這些標籤是從像

dbUri=jdbc:oracle:10.1.1.10:1224:ORCL 
dbUser=Scott 
dbCredentials=Tiger 

被部署必須是環境採取以某種方式提供給構建腳本,但您仍然需要這樣做。

+0

+1將作品推送到構建服務器 – 2010-07-16 06:34:26