1. ホーム
  2. .net

[解決済み] app.configが作成されるタイミングとapp.exe.configが作成されるタイミング、その違いとは?

2022-03-13 22:15:11

質問

WinFormsアプリケーションを作成し、ConfigurationManagerクラスを介していくつかの構成を保存しています。情報を格納するために、私は以下を使用しています。

Configuration pConfig = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
pConfig.AppSettings.Settings.Add("updates", szUpdatesURL);
pConfig.Save(ConfigurationSaveMode.Modified);

ここで問題なのは、あるときはアプリケーションが"appname".configファイルを作成し、別のときは"appname".exe.configを作成することです。

ここで、設定ファイルが常に必要なわけではないので、デフォルトでは出荷されないことに注意しなければなりません。

コンフィギュレーションは、プログラムの初回実行時に保存されます。このため、どのような場合にどちらを作成するのか指定できないという問題がありました。

同じPCで、全く同じ.exeを使ってテストを行いましたが、両方の結果が得られました。ここで何が起こっているのでしょうか?

また、どちらを作成するかは、どのように指定すればよいのでしょうか。 ありがとうございました。

どのように解決するのですか?

アプリケーションをコンパイルすると、"appname.exe.config"が自動的に作成されます。これは、エンドユーザーに配布されるべきファイルです(もちろん、exeファイルと一緒に)。appname.configで設定した内容は、appname.exe.configに引き継がれます。 They are essentially the same files . appname.configが存在する理由は、実行ファイルを実行したときに、その設定ファイルが実行ファイル名に単純な .config というサフィックスがつきます。しかし、実行ファイルの名前が変わった場合、手動でexe.configファイルの名前を変更する必要があります。そこで コンパイル時 app.configのファイル名をnewappname.exe.configに変更しても、CLRはそれを拾ってくれるのです。appname.exe.configファイルはbinディレクトリに作成されることが分かると思います。 これではっきりしたかな :) 以下のリンクは、もう少し深いところまで説明しているかもしれません。

いい解説があります here . もう一つの良い読み物は CodePlex .