App.configすら不要

昨日の日記では.NETにおけるDIコンテナの設定ファイルの配置方法について言及したが設定ファイルを全て埋め込みリソースとした所でこのままではApp.configの配布だけは必要だということに気がついた。というのもDIコンテナの設定ファイルへのパスは以下のようにApp.configに書くことが想定されているからである。


    
        

スマートクライアント(リッチクライアント)の配置時にはApp.configすら使いたくないというケースにはどう対応するか。(App.configだけは埋め込みリソースにはできなかったはず)

こんなときこそ"Convention over Configuration(適切な規約は設定に勝る)"を使おう。

DIコンテナの生成はアプリケーションのエントリポイントで一度だけ行うこととする。
・起動時のコマンドライン引数で設定ファイル又はリソース名が指定された場合はそれを使う。
・App.config(アセンブリ名+".config")が配置されていた場合はそれを使う。
・上記のいずれにも当てはまらない場合は"アセンブリ名"+"components.config"という名前の設定ファイル又はリソースを使用する。

この状態でアセンブリ名+"components.config"という名前で設定ファイルを埋め込んだリソースを用意しておけば実行アセンブリ(EXE又はDLL)以外は配布するファイルはなくなる。