7

私のほとんどのアプリケーションでは、データベースアクセス/モデリングにはiBatis.Net、ロギングにはlog4Netを使用します。これを行うには、プロジェクトごとにいくつかの* .configファイルが必要です。例えば、簡単なアプリケーションのために私は次の*の.configファイルを持っている必要があります:設定ファイルの数をできるだけ少なくする

  • app.configを([のAssemblyName] [拡張について]の.config。)
  • [のAssemblyName] .SqlMap.config
  • [のAssemblyName] .log4Net.config
  • [のAssemblyName] .SqlMapProperties.config
  • providers.config

これらのアプリケーションはPRODUCTIONにテストするためにDEVから行きますこれらのファイルに含まれる設定は、環境によって異なります。

プロジェクトごとに5〜10(またはそれ以上)の実行可能な実行ファイルを持つことでファイルの数が増えると、インフラストラクチャチーム(異なる環境へのロールアウトを実行する作業負荷)がかなり高くなります。また、設定ファイルの1つが欠落したり、設定ファイルのミスタイプが発生するリスクが高くなります。

これらのリスクを回避するには、どのような方法が最適ですか?すべての設定ファイルを1つのファイルにまとめるべきですか? (これはiBatisでも可能ですか?)私は、VisualStudio 2010で、これらの設定ファイルの変換を導入することで、開発者が異なる環境のすべての設定をセットアップし、次に動的に(ビルドに応じて)正しいバージョンに変換します。 (VS 2010 - transforms

ご協力いただきありがとうございます。

答えて

2

あなたは、私は自分のWebアプリケーションの一つに、私のウェブにlog4netの、アクティブレコードとCiphersafeを使用しています

の構成セクションに追加することにより、メイン*の.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> 

私は唯一のweb.configファイルがあります。それから私は私の外部アセンブリと設定ファイルをすべて含んでいる私のソリューション名ProjectFilesに別々のプロジェクトを作成しました。次に、私の解決策を操作側に更新するように要求すると、Webアプリケーションファイルで関連する設定ファイル(testまたはprod)をコピーします。

2

もう一つの方法は、 AWKスクリプトやXSLTのように、環境ごとに固有の設定を含む単一のファイルと組み合わせて使用​​します。

ANTには、これを可能にするプラグインがあります。他のビルドツールでも、よく公開されている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ビルドサーバーに作業をプッシュするための+1 –

関連する問題