2011-01-18 20 views
3

ソースセーフでソース管理されている9つのプロジェクトでVisual Studio 2010のソリューションを利用しています。私は最近、ハードドライブをスワイプし、WinXP x86から​​Win7 x64にアップグレードしました。私が「新しい」マシンに解決策をチェックしたところ、一部の部品が正しく動作していないので、デバッグしようとしています。Visual Studio - 一部のブレークポイントが破損していない

私が以前にVS2008で働いていたことに気がつくはずです。私がアップグレードしたとき、まずVS2008でプロジェクトを開いて、問題なく動作していることを確認しました。デバッグが必要な問題があることに気付きました。私はいくつかのブレークポイントを設定し、カップルは働いて、カップルはしませんでした。私はすぐにいくつかが壊れていない理由を理解することができなかったので、私はそれを働かせることを望んで、VS2010にプロジェクトをアップグレードすることにしました。それはしませんでした。

メインプロジェクトは、他のすべてのプロジェクトによって参照されるライブラリであるプロジェクトのパブリックモジュール内のパブリックサブプロジェクトを呼び出します。私はコードが実行を開始するとすぐに正常に壊れるForm_Loadのメインフォームにブレークポイントを持っています。 Form_Loadは、ブレークポイントも持っている前述のpublicサブを呼び出します。しかし、そのブレークポイントは壊れません。つまり、デバッガはProjectStartupActions()の呼び出しで停止しますが、定義Public Sub ProjectStartupActions()またはその中の任意の行で停止しません。

Form_Loadのサブ呼び出しで「Go To Definition」を選択すると、ブレークポイントがある正しい場所にジャンプするため、ブレークポイントを正しく配置していることがわかります。

マイプロジェクト>>デバッグ>>構成がすべてアクティブな(デバッグ)に設定され、プラットフォームがすべてのプロジェクトに対して「アクティブ(任意のCPU)」に設定されている。リリースよりもデバッグで実行する必要があることをさらに確認するには、ライブラリプロジェクトの「デバッグ」フォルダにエクスプローラウィンドウを開いてプロジェクトをクリーンアップすると、フォルダが空になります。再構築または実行すると、ファイルはすべて置き換えられます。

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

ああ、私もPublic Sub ProjectStartupActions()のコードに変更を加えました。私はサブの最初の行にMsgBox("Hello")を追加しましたが、決してポップアップしません。

+3

出力ウィンドウで「first chance exception」メッセージを探します。プラットフォームターゲットをx86に設定してデバッグします。 –

+0

出力ウィンドウを開いてプロジェクトをきれいにしてから、再構築と実行を行いました。 「最初のチャンスの例外」はリストされていませんでした。また、デバッグのためにx86を特にターゲットにする必要がある理由を明確にすることはできますか?私はあなたの提案を試みますが、私は現在の設定でメインプロジェクトのブレークポイントに止まる問題はありません。 – jwatts1980

+0

プラットフォームをx86に設定し、ブレークポイントで停止しました。それはまた、msgboxをポップアップ。 :) 驚くばかり。なぜこれは "Any CPU"で動作しないのですか?また、私はSOのnewbですが、答えとしてあなたのコメントをどうすればいいですか? – jwatts1980

答えて

2

対象をx86に設定してデバッグします。 - Hans Passant

これは機能しました。ありがとう!!私はConfiguration Managerを使用して、ソリューション全体のターゲットをx86に変更しました。

しかし、なぜ機能しましたか?なぜ "Any CPU"オプションはメインプロジェクトではなくライブラリでは機能しませんでしたか?

+1

私はあまりにも、なぜこれがうまくいくのか興味があり、これを必要とするためにこのプロジェクトに何が起こったのか... – Didaxis

0

ああ、私はPublic Sub ProjectStartupActions()のコードに変更を加えました。私はサブの最初の行にMsgBox("Hello")を追加しましたが、決してポップアップしません。

あなたのプロジェクトの依存関係などの問題は、正しくありません。メインフォームプロジェクトがライブラリプロジェクトProjectStartupActions()の機能を持つ)に依存していることを確認します(既にビルドされたライブラリアセンブリに依存しません)。

これにより、必要に応じてVSがライブラリアセンブリを再構築し、新しく構築されたアセンブリを参照するようになります。

物事を同期させるために完全なクリーン/リビルドを行う必要があるかもしれません。また、必要な展開プロジェクト/スクリプトを確認して更新する必要がある場合もあります。

+0

メインプロジェクトの[マイプロジェクト>>参照]を開きました。ライブラリのターゲット場所はライブラリのDebugフォルダでした。それにもかかわらず、私は参照を削除し、保存しました。明らかに、私は数多くのエラーがあったので走れませんでした。 Addをクリックし、Projectsタブを選択して、ライブラリプロジェクトを再追加しました。次に、インポートした名前空間として再確認しました。エラーが解消されたので、私はソリューションをきれいにして再構築して実行しました。ブレークポイントはまだ破損しませんでした。私はブレークポイントを移動する、削除する、実行して再追加するなど、他の小さなことをやったことがあります。 – jwatts1980

+0

私は動作しなかった何かを試しました。私が私のコメントで説明したプロセスを経て、プロジェクトのどこかにライブラリ用のDLLがなければならないと思っていました。私はソリューションフォルダでDLLの検索を行い、以前のリリースビルドの成果物であったいくつかのリリースフォルダでいくつかを見つけました。私は先に進み、各プロジェクトのすべてのリリースフォルダを完全にクリアしました。それから私は再び解決策をきれいにした。もう一度再構築してください。それからもう一度走った。もう一度失敗してください。 – jwatts1980

+0

デバッガを開いているときにモジュールウィンドウを見て、ライブラリアセンブリのロード先を確認します。これは、削除が必要なファイルや変更が必要なプロジェクト構成オプションのいずれかの手がかりを与えるかもしれません。 –

関連する問題