- - PR -
プログラムを修正してデバッグしても、修正した結果が反映されません。
投稿者 | 投稿内容 | ||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2008-05-28 13:23
よこけんさん,お忙しいのに大変親切なご指導を頂本当にありがとうございます。
分りましたDebug ビルドと Release ビルドについて勉強しておきます。 また、binとobjフォルダを削除すると正常にプログラム変更が反映される新バージョンが立ち上がります。そしてこのプロジェクトの「構成マネージャ」はDebug のままですが、正常に動作しています。 お忙しいところすみませんが、以前(投稿日時: 2008-05-27 15:55)に質問された
この内容は「印刷ボタンを配置すると*.designer.vb は更新されるがソースコードに変更がないと*,vb は更新されていない。よってデバッグでは更新された*.designer.vb は旧バージョンが立ち上がり、更新されていない*,vb は現行バージョンが立ち上がっているから、ブレークポイントでストップしている」と予測されてのご質問だったのでしょうか。? お忙しいので何時でも結構ですが、教えていただければ幸いです。 [ メッセージ編集済み 編集者: One.net 編集日時 2008-05-28 13:25 ] | ||||||||||||||||||||||||||||||||||||||||
|
投稿日時: 2008-05-28 15:48
うーん、そうですか。 そうすると、配置場所に原因があったってことなのかなぁ…?? 僕には見当つきません ^^;
そうですね、実行ファイルのビルド時に使用されたソースコードと比べ、*.vb ファイルは相違点がないため現行バージョンと判断され、*.vb ファイルのデバッグが可能であった、ということです。 _________________ C#と諸々 | ||||||||||||||||||||||||||||||||||||||||
|
投稿日時: 2008-05-29 11:27
今回のトラベルに対して大勢の先輩から助けられ、明快な原因はまだわかっておりませんが、おかげさまでトラブルを回避することが出来ました。
その間、ご指導やご指摘をいただき大変ありがとうございました。問題の状況を尋ねられているときは、その状況説明や指摘されたテストの結果報告で忙しく、何をどんな意味で尋ねられているのか等を検証する余裕もありませんでした。 あとになって読み返してみるとデバッグやビルドに関するトラブルのチェック項目が多岐にわたっている事がわかりました。今後のトラブル対応の意味からも今回指導や指摘いただいたことを私なりにまとめ、以下の通り報告いたします。
以下、状況説明をQ&A形式で連記しました。 ◆1.ソリューションのリビルドを試してください → デバッグしても修正画面が反映されません。 ◆2.ソリューションのクリーン→ソリューションのビルド を試してください 。 −−→ クリーンの方法が分らず未対応 ◆3.エクスプローラでプロジェクトフォルダ内の bin フォルダと obj フォルダを削除してからビルド下さい。 −−→ bin フォルダ と obj フォルダを削除してからビルドしても結果は同じでした。 ◆4.該当プロジェクトの作り直し (各コンテンツは流用できるのでそれほどの手間ではないかと)
◆5.改善後の.vbファイルのタイムスタンプを調べてはどうか。→意味を理解できず未対応
※この方法は別のトラブルでも有効な方法だと思われます。ただしIDEでは次の点に注意が必要 ・エクスプローラの更新日時はIDEを閉じてプロジェクトが保存されないと更新されない。 ・デザインのみの修正でも .vb も更新されるが、コードのみの修正では .Designer.vb は更新されない。 ◆6.現象の発生しているアセンブリは exe ファイルですよね?→ はい ◆7.修正した.vb とビルド対象の.vbが違っていて改善前の.vbをビルドしていませんか −−→ 再確認しましたが同じ.vb です。 ◆8.修正した.vb とよく似た .vbを見ていることはありませんか→ ありません。9のテストで証明 ◆9.スタートページの一番最初にブレークポイント貼って止まりますか。 −−→ ブレークポイントに黄色い矢印が出てとまりました。 ※このことはブレークポイントを設定した.vb とビルドした.vb が同じであることも実証している。 ◆10.ソースコードに変更を加えてから9のブレークポイントを試してください。 −−−→ ブレークポイントで止まりません。 ※スタートフォームに「MessageBox.Show("テスト中です。")」を挿入した。このことは[印刷]ボタンを貼りつけただけの.Designer.vb 編集(更新)されたこととなり貼りつける前の旧バージョンがビルドされ、ブレークポイントのみを設定した.vb は編集(更新)していないことで現行バージョンがビルドされてブレークポイントで止まったと予測される。続けてコードにMessageBox.Showを挿入編集後デバッグするとブレークポイントでは止まらずMessageの表示もなかった。
◆11.VS のソリューションエクスプローラで構成マネージャにビルドにチェックがある事を確認。 −−→確認方法が分らず未確認(後で確認方法伝授してチェックが入っていることを確認)
◆12.VBの場合、メニューとかのリソース管理はどんな風になってるか。 → 力不足で未回答 ※VCだとリソースファイルが別にあってそれを編集しますけれど。 リソースが反映されていなくて画面上にも出ないのかなぁ。 ◆13.ソリューションファイル(*.sln)をメモ帳などで開いてプロジェクトファイルのパスを確認する −−→ 確認(修正プロジェクトのパス) ◆14.そのプロジェクトファイル(*.vbproj)をメモ帳などで開いて<Compile Include="VBファイル.vb"> となっているVBのファイルのパスを確認する。 −−→ 力不足で未確認 ◆14.ツール メニューのオプション→ 「プロジェクトおよびソリューション」の「ビルド/実行」は?
−−→実行時にビルド又は配置のエラーが発生したとき[古いバージョンを起動する] を「起動時に確認する」や「起動しない」に設定して実行しましたが以前と同様で解決しません。 ◆16.他の画面に関しても同様に変更が反映されないのでしょうか? → はい(他のフォームも同じ) ◆17.保存されてないのでは? → プロジェクトは何度も保存しています。 ◆18.以下の手順も試してください? 1. 適当な場所にブレークポイント貼っておいてデバッグ実行 2. ブレークポイントで止めた状態にする 3. ソースコードを適当に右クリックし、クイックウォッチを開く 4. クイックウォッチに AppDomain.CurrentDomain.BaseDirectory と入力 5. [再評価] ボタンをクリックし、表示された値を確認 ※これはアプリケーションの実行パスを調べている。
◆15. [構成マネージャ] ウィンドウの [アクティブ ソリューション構成] を Release に変更して閉じてください。 あとはリビルド後 Ctrl + F5 で実行してください。
◆19.binとobjフォルダを削除して、そのプロジェクトをフォルダごとマイドキュメントに移動すると変化が起きる? −−→15のテスト後に19のテストをしたためか、プロジェクトをマイドキュメントに移動しなくても正常に動作するようになりました。 ◆20.DLL作っていますか? → いいえ ◆21.Debug ビルドと Release ビルドについてはしっかり抑えておくことをお勧めします。 −−→ はい(以下に参考サイトを) http://www.nitoyon.com/vc/tutorial/project/build_detail.htm http://www.atmarkit.co.jp/fdotnet/special/msbuild01/msbuild01_01.html http://www.donguri.sakura.ne.jp/~shock8/wisper/debug_release.html ◆追記22.ターゲットファイル(*.Designer.vb や*.vbファイル)よりもソースファイル(bin\Debug\フォルダの*.exe ファイル)の方が古いといつまでたってもビルド対象になりません。よってビルド対象であるためにはターゲットファイルよりソースファイルが新しい事をエクスプローラの更新日時で確認下さい。 (DLLを作成する場合のターゲットは*.dllです) −−→ 後日(投稿日時: 2008-05-29 12:51及び2008-05-30 17:35)に指導されたためテストしていません。 【今後の反省点】 ・この現象は目に見えてわかるような違いが発見されない可能性があるから、原因は追究しておいた方がいい。 ・指摘を受けた時には指摘内容が理解できず(例:タイムスタンプ=更新日時)回答者に失礼があったこと。 ・まだまだ基本的なことを収得できていなく、勉強が必要なこと。 ・プログラム開発中は毎日バックアップをとること ・急いだことは理由になりませんが、誤字は多いこと。 以上 [ メッセージ編集済み 編集者: One.net 編集日時 2008-05-29 12:48 ] 追加→◆追記22 [ メッセージ編集済み 編集者: One.net 編集日時 2008-06-02 14:19 ] | ||||||||||||||||||||||||||||||||||||||||
|
投稿日時: 2008-05-29 12:51
指摘済みかもしれませんが、ひょっとして作業しているPCの時計が狂ってたりしませんか?
あるいは、時計が狂っているPCから作業ファイルをコピーしてきたとか。 | ||||||||||||||||||||||||||||||||||||||||
|
投稿日時: 2008-05-29 13:15
渋木宏明(ひどり)さん、ご指摘ありがとうございます。
おっしゃるとおりです。実は開発中のプログラムは1ヶ月に1度しか実行できない機能がありまして このテストを行うたびにこの制限に引っかかり、PCの時計を変更して行っていました。 テストを実行してから元に戻すことを忘れことがよくあり、先日も忘れていて修正しました。 それがトラブル発生した日かは確認出来ませんが、おそらく27日だったような気がします。 6月にデバッグして5月に再度デバッグしたことになり以前と比較できなくなったものと予測します。 これですっきりいたしましたが、今までご指導いただきました先輩にはなんとお詫びしたらよいか。 この場を借り、この通りお詫びいたします。 渋木宏明(ひどり)さん、本当にありがとうございました。 _________________ | ||||||||||||||||||||||||||||||||||||||||
|
投稿日時: 2008-05-29 13:40
うーん、でも bin, obj フォルダを一度削除してるんですよね。
以下の手順で試してみましたが、正常にビルドされます。 1. 時計を一日進めた状態でデバッグ実行 2. 時計を元に戻す 3. bin, obj フォルダを削除してデバッグ実行 うーん。。。 _________________ C#と諸々 | ||||||||||||||||||||||||||||||||||||||||
|
投稿日時: 2008-05-29 13:47
時計が狂った(進んだ)状態でソースを変更しないと再現しないです。 | ||||||||||||||||||||||||||||||||||||||||
|
投稿日時: 2008-05-29 13:54
すみません、記述漏れです。
手順 3 の時点でソースに変更を加えてます。 それと、bin, obj フォルダを削除せずに試せば再現するということは確認済みです。 // 追記 もちろん、手順 1 の時点で未来のアセンブリが生成されるようにして試しています。 _________________ C#と諸々 [ メッセージ編集済み 編集者: よこけん 編集日時 2008-05-29 14:07 ] |