app.configの配置場所の変更

解決


ドナギ  2009-06-02 16:14:32  No: 145953  IP: 192.*.*.*

VB2005で、アプリケーションの設定ファイルをapp.configで作ってます。
ビルドすると実行ファイルと同じ階層に実行ファイルと同名の設定ファイル
が作成されるのですが、
このファイル名を変更したり保存する場所を指定したりすることは
簡単にできないでしょうか?

編集 削除
aetos  2009-06-04 09:54:28  No: 145954  IP: 192.*.*.*

仮にできたとして、その構成ファイルの場所はどうやって求めるんでしょう?  ハードコーディング?

検証はしていませんが、ConfigurationManager.OpenExeConfiguration とかOpenMappedExeConfiguration を使えば出来そうな気がする。
ただし、My.Settings は使えなくなるし、構成名をプロパティに持つ自動生成クラスも使えなくなると思います。
あまりメリットがなさそうな。

編集 削除
ドナギ  2009-06-04 10:41:04  No: 145955  IP: 192.*.*.*

実行ファイルと設定ファイルとを同じ場所に配置したくないので、
別途フォルダを作ってそこに配置させたいと思っています。

以前はiniファイルを使っていたので、app.configでも同様に
したいのです。

編集 削除
aetos  2009-06-04 13:15:05  No: 145956  IP: 192.*.*.*

> 実行ファイルと設定ファイルとを同じ場所に配置したくない

のは何故でしょうか?  なんとなく?

ちなみに、インストールはどうお考えですか?
任意のフォルダに置いて使えるような形態を考えているのか、Program Files 以下にインストールするような形態を考えているのか。
後者の場合、一般ユーザーは Program Files 以下のファイルを書きかえる権限を持ちませんので、Program Files 以下の .config ファイルは読み取り専用になります。
その場合、ConfigurationManager 等を用いた設定の保存は、各ユーザーの AppData フォルダ以下に別のファイルが(勝手に)作られることになります。
まぁ、それも OpenMappedExeConfiguration とかでカスタマイズできるとは思うんですが。たぶん。

編集 削除
ドナギ  2009-06-04 13:43:18  No: 145957  IP: 192.*.*.*

ユーザーはMSIセットアッププログラムで任意のフォルダにインストール
できます。
設定ファイルには接続文字列などが書いてあるので、基本的にいじること
はありません。
プログラム・DLL・設定ファイルなど、ファイルの種類ごとに別々のフォルダに分けて配置する方が個人的に好きだからという理由だけです。

編集 削除
aetos  2009-06-04 14:39:24  No: 145958  IP: 192.*.*.*

インストールフォルダ
├exeフォルダ
├dllフォルダ
└configフォルダ

みたいな作りにすると、exe から dll や config を読み込むのにも余計な手間がかかります。

インストールフォルダ
└exe、dll、config 全部一緒

にしておけば、そのあたりは .NET Framework が全部面倒見てくれます。

個人的には、ぜんぶ一緒にするのをお勧めしますが、敢えて茨の道を歩まれたいのであれば止めはしません。

編集 削除
ドナギ  2009-06-04 15:37:31  No: 145959  IP: 192.*.*.*

簡単にはapp.configではできなさそうなので、iniで作ることにします。
どうもです。

編集 削除
魔界の仮面弁士  2009-06-04 17:02:29  No: 145960  IP: 192.*.*.*

別フォルダに置いた XML ファイルを読むことだけを目的とするのであれば、
XmlDocument.Load メソッドとか、DataSet.ReadXml メソッドでも良いのかも。

編集 削除