- - PR -
app.configの参照先について
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2007-08-20 11:49
こんにちは。
いつも参考にさせていただいてます。 app.configは通常、EXEと同じフォルダに設定していますが、 もし、EXEと同じフォルダに存在しない場合は、 どこのapp.configを参照するのでしょうか? 今、app.configをEXEと同じフォルダから削除して EXEを実行したのですが、予想では起動できないかなと 思ったのですが正常に起動しました。 そこでもう一度、EXEと同じフォルダにapp.configを 戻して起動した場合も正常に起動したのですが、 EXEと同じフォルダにapp.configの値を変更しても 反映されません。 どこか別で設定されている値を参照しているのでしょうか? 環境は VB.NET2005 Windowsアプリケーション | ||||||||
|
投稿日時: 2007-08-20 12:29
http://msdn2.microsoft.com/ja-jp/library/ms229689(VS.80).aspx
通常のexeであれば、同じディレクトリのxxxx.exe.configです。
アプリケーション構成ファイルは無くても起動できます。
それはexeを起動したままアプリケーション構成ファイルを書き換えていませんか? exeを再起動してみてください。 | ||||||||
|
投稿日時: 2007-08-20 13:17
一郎さん返信ありがとうございます。
補足で説明しますと、app.config(xxxx.exe.config)の中で DBの接続情報を指定しています。 起動時にDBへ接続しますのでapp.configから接続情報を取得できないと 起動に失敗するはずです。 EXEの再起動を行っても状況は変わりません。 | ||||||||
|
投稿日時: 2007-08-20 15:04
確認です。
とあった場合に XXX.exe.config を書き変えた後 ビルドすると app.config の内容で XXX.exe.config が置き換わりますが大丈夫ですよね。 app.config のほうが優先度が高いですが、見つからなかったら machine.config の値を使います app.config から値が取れない場合何らかの値を使うようなプログラミングをしてたりしませんよね。 設定ファイルから値を取得している部分とデータベースに接続文字列を出力している部分でメッセージボックスなどを出して確認してみてはどうでしょうか? _________________ かるあ のメモ と スニペット | ||||||||
|
投稿日時: 2007-08-20 15:05
ほう、それは不可思議現象ですね。
ではexe(と必要なdll)ファイルのみをどこか別の場所にコピーして実行してみましょう。 これでDBの接続情報を取得できなくなるはずですよね。 ---------- うお、かるあさんと同タイミング。 [ メッセージ編集済み 編集者: 一郎 編集日時 2007-08-20 15:07 ] | ||||||||
|
投稿日時: 2007-08-20 15:43
はい、その辺りは理解しています。 conString = "User Id=" & My.Settings.DB_USERID & ";Password=" & My.Settings.DB_PASSWORD & ";Data Source=" & My.Settings.DB_DATASOURCE としていますので設定とDBの接続文字の作成はほぼ同じときにおこなっています。
実行してみましたが、状況はかわらずapp.config(xxxx.exe.config)が 同じディレクトリに存在しなくても実行できます。 一度、マシンを再起動してみたのですが、状況はかわらずです。 いったいどこのconfigファイルを参照しているのか不思議です。。。 | ||||||||
|
投稿日時: 2007-08-20 16:37
詳しく知らないんですがSettingsはMachine.configも参照するのかな。でもPasswordは入ってないか。。
My.Settingsって、実はベタ書きだったということはないですよね。。 | ||||||||
|
投稿日時: 2007-08-20 16:59
べるさん、返信ありがとうございます。
Machine.configはみてみましたが、特にDBの接続文字の設定はありませんでした。 My.Settingsのベタ書きってどんな状態をいうのでしょうか? VisualStudioからデバックしているときはアプリケーションの設定で 値を変更すると反映されていました。 運用環境と同じようにEXEとDLLをコピーして実行すると問題が発生します。 |