none
実行時にアプリケーション設定ファイル(*.config)が存在しない場合の動作について RRS feed

  • 質問

  • 初めまして。.naka と申します。

     

    VB .NET で作成したアプリケーション(EXE)を実行する時に

    アプリケーション設定ファイル(実行ファイル名.config)がEXEと同じフォルダに存在しない場合に、

    My.Settings.XXXXで値を取得すると、エラーとなるのではないかと考えたのですが、

    実際に試してみたところ、

    エラーとならずに、My.Settings.XXXXで値が取得されました。

    (スコープはアプリケーションで指定しています。)

     

    この値はどこに保存されているのでしょうか?

    EXEの中に含まれているのでしょうか?

    2008年5月13日 8:15

回答

  • My.Settings の自動生成コードで既定値が設定されています。
    コンフィギュレーションが見つからない場合は既定値が使用されます。

    参考
    http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=40777&forum=7&start=8

    2008年5月13日 9:42

すべての返信

  • .nakaさんこんにちは

    MSDNをみるとLocalFileSettingsProviderを使ってユーザレベルの設定が保存されるようです。

    http://msdn.microsoft.com/ja-jp/library/system.configuration.localfilesettingsprovider.aspx

    LocalFileSettingProviderの説明では"特定のユーザー データは、ユーザーのホーム ディレクトリの下にある username.config というファイルに格納されます。"とありますが、実際確認してみると、私の環境ではホームディレクトリ直下ではなく、

    C:\Documents and Settings\[ユーザID]\Local Settings\Application Data\

    以下にアセンブリ名のフォルダが作成されてさらに、アセンブリ名+文字列\バージョン\username.configというファイルで保存されるようです。

     

    追記

    ユーザ固有設定の保存先ではなく、構成ファイルのことだったんですね。

    すいませんとんちんかんな回答してました。無視して下さいませ。

    2008年5月13日 8:51
  •  .naka さんからの引用

    アプリケーション設定ファイル(実行ファイル名.config)がEXEと同じフォルダに存在しない場合に、

    My.Settings.XXXXで値を取得すると、エラーとなるのではないかと考えたのですが、

    実際に試してみたところ、

    エラーとならずに、My.Settings.XXXXで値が取得されました。

    (スコープはアプリケーションで指定しています。)

     

    スコープがアプリケーションの値はapp.config内に保存されており、アプリケーション設定ファイル(実行ファイル名.config)は実行時にapp.configから作成されます。

    2008年5月13日 9:13
    モデレータ
  • My.Settings の自動生成コードで既定値が設定されています。
    コンフィギュレーションが見つからない場合は既定値が使用されます。

    参考
    http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=40777&forum=7&start=8

    2008年5月13日 9:42
  • そうです。ユーザーではなくアプリケーションの方です。

    ユーザーでも同じ動きな可能性も高いですが、

    ひとまず、アプリケーションの方で話をすすめさせて頂きたいと思います。

    2008年5月13日 14:39
  • >スコープがアプリケーションの値はapp.config内に保存されており、

    >アプリケーション設定ファイル(実行ファイル名.config)は実行時にapp.configから作成されます。

     

    説明不足でした。申し訳ありません。

    実行したEXEを他のパソコンに持っていって実行した際に、

    *.configは持っていかなかったのです。

    それなのにエラーにならなかったということです。

    (実行したパソコンへはソースも持っていっていないので、

    app.configも持っていっていませんでした。)

    2008年5月13日 14:43
  •  

    >My.Settings の自動生成コードで既定値が設定されています。
    >コンフィギュレーションが見つからない場合は既定値が使用されます。

     

    自動生成コードの中に規定値が書き込まれていて、

    それがEXEの中に含まれているということですね。

    なるほど、納得しました。

    今、VB.netの環境が無いので、明日にでも確認してみます。

    どうもありがとうございました。


     

     

    2008年5月13日 14:46