質問: VB初心者です。 現在、Microsoft Visual Basic.NET 2003による Windowsフォームアプリケーション開発を行っています。 (Windows XP環境) Debug構成でのビルドを行うと、通常通りプログラムが開始されますが、 Release構成でのビルドを行うと、途中で終了してしまいます。 ブレークポイントを置いてみたところ、 InitializeComponent()の中にも入ってこれていないようで、 どう原因を探したらよいかもわかりません。 この現象を解決する為に、どのような手段が考えられるか ご教示頂けないでしょうか。 【目的】 ・Release構成でビルドし作成したexeファイルで、 通常通りプログラムが起動されることを確認したい。(他のPCで動作させるため) 【補足】 ◆調べて分かったこと(ふわふわとした理解&間違えているかもしれませんが) ・ブレークポイントを置いても引っかからないのはそもそもRelease構成だから? ・DEBUG構成とRELEASE構成では、そもそも作りが変わってくる(何かの) ◆追加情報 ・
回答: こんにちは。 Release構成でのビルド自体は成功して実行ファイル(*.exe)はできるんだけども、 そのexeを起動すると異常終了してしまう、と言うことで話を進めます。 (タイトルと前半のお話では、ビルド自体が失敗する、とのように読み取れたので) 実行用のPCでVisual Studio でデバッグできない場合、プログラムに デバッグ端末にデバッグ用メッセージを出力するようにして確認する方法があります。 例えば、以下のようにSystem.Diagnostics.TraceクラスのWriteLine()メソッドで文字列を 出力するようコードを追加し、 ``` System.Diagnostics.Trace.WriteLine("Test") ``` 別途、DebugViewと言うマイクロソフトのツールを実PCにインストールして、 デバッグ用端末として動作させます。(インストールと言うより、コピーだけで動きます) DebugView for Windows そうすると実PCでデバッグ/トレース用のメッセージを確認することができます。 FormのInitializeComponentメソッドですが、例えばForm1クラスを作ったとして フォームは自動生成されたソースファイル Form1.Desiginer.vb に定義されますが、 フォームのデザインを変えて保存、リビルド等をしなければ自動生成されず、 上書きされません。 なので、Form1.Desiginer.vb 自体に System.Diagnostics.Trace.WriteLine()を 記述することも可能なはずです。(追記:VS2015 のVB.NET では可能でした) ただ、今回はInitializeComponent()自体にブレークしないということなので、 それ以前に落ちている可能性もあります。Visual Studio 2015 で簡単な VB.NET Formアプリケーションプロジェクト(Release / AnyCPU)で試したところでは Releaseビルドでもブレークポイントにヒットしました。 Exceptionの送出で、スタックトレースを取れれば原因の箇所がより分かるのですが。 また、もしかするとWindowsのイベントログにエラーが報告されているかも しれませんので一応確認してみてください。 Windows XP + Microsoft Visual Basic.NET 2003ということで Windows OSとSDK関連の古さによる原因も考えられます。 更に、まったくの想像ですが、プログラムの起動自体ができないということで 「参照」が何か影響しているかもしれません。外していたらすみません。