ここから本文です

解決済みの質問

[.NET Framework]Application.ExecutablePathについて

kazuhiro_horiuchiさん

[.NET Framework]Application.ExecutablePathについて

Visual Studio 2008 ExpressのC++でフォーム形式のアプリケーションを制作していますが、

String^ FileName;
FileName = Application::ExecutablePath;

の様に呼び出すと

'System.IO.FileNotFoundException' の初回例外が mscorlib.dll で発生しました。
追加情報: ファイル 'c:\[プロジェクトパス]\Release\[プロジェクト名].config' が見つかりませんでした。

この様な例外が発生します。

しかし、ここで"FileName"には"c:\[プロジェクトパス]\Release\[プロジェクト名].exe"が代入されます。

更に、例外が発生してもデバッグ及びリリースの動作がここで中断される事はありません。
VisualStudioの[デバッグ]→[例外]の設定で中断させる様にすると中断されます。

試しに"c:\[プロジェクトパス]\Release\[プロジェクト名].config"と言う空のファイルを作るとメッセージが変わり、

'System.Xml.XmlException' の初回例外が System.Xml.dll で発生しました。
追加情報: ルート要素が見つかりません。

となります。
何故この様な挙動が起こるのか、例外を出さない様にする(try,catch等でハンドルする訳ではなくて)にはどうすればいいのか教えて下さい。

補足
"Windows フォーム アプリケーション"を新規に作成し、

private: System::Void Form1_Load(System::Object^ sender, System::EventArgs^ e) {
String^ FileName;
FileName = Application::ExecutablePath;
}

これでも再現します。
自動生成コードが呼び出しているのでしょうか?

違反報告

ベストアンサーに選ばれた回答

lasta_scopeさん

回答にはなっていませんが、
Application::ExecutablePathプロパティで
FileNotFoundExceptionが投げられるという説明は
リファレンスに書かれていません。

また、質問の内容から考えて、
.configファイルの中を解析しようとしているようです。
Application::ExecutablePathプロパティ以外で
.configファイルにアクセスする箇所はありませんか?

例外の中断設定では、例外が投げられた次の行で停止する場合があります。
Application::ExecutablePathプロパティの前で.configファイルを使う箇所がないか、探してみて下さい。
見当違いな指摘かもしれませんが!

<補足を読んで>

同じことを行ってみましたが、例外は発生しませんでした。
DebugでもReleaseでも、Releaseを他の場所にコピーしてから実行しても、
何も問題はありませんでした。
開発環境自体がおかしな状態になっているのでしょうか?
私には分かりません。
ちなみに、OSはWin7 Home、開発環境はVisual C++ 2008 Proです。

  • 違反報告
  • 編集日時:2012/2/17 23:28:34
  • 回答日時:2012/2/17 00:01:06

この質問は投票によってベストアンサーが選ばれました!

この質問・回答は役に立ちましたか?
役に立った!

お役立ち度:お役立ち度 0点(5点満点中)0人が役に立つと評価しています。

知恵ノートとは?

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。

お客様自身の責任と判断で、ご利用ください。

話題のキーワード

[カテゴリ:C言語関連]

ただいまの回答者

01時43分現在

2316
人が回答!!

1時間以内に4,174件の回答が寄せられています。

>>回答ひろばに行く


知恵コレに追加する

閉じる

知恵コレクションをするID/ニックネームを選択し、「追加する」ボタンを押してください。
※知恵コレクションに追加された質問や知恵ノートは選択されたID/ニックネームのMy知恵袋で確認できます。

ほかのID/ニックネームで利用登録する