3

私のソリューションには3つのプロジェクトがあります:1)Silverlightアプリケーションプロジェクト2)ASP.Net Webアプリケーションプロジェクト3)WCFサービスアプリケーション。プロジェクト1と2には、プロジェクト3へのサービス参照があります。バインディングタイプはbasicHTTPbindingです。

プロジェクト2をスタートアッププロジェクトとして設定すると、プロジェクト1と2の両方で設定されたブレークポイントがヒットしますが、プロジェクト3ではブレークポイントはヒットしません。

プロジェクト3をスタートアッププロジェクトとして設定した場合でも、クライアントアプリケーションを使用でき、プロジェクト3のブレークポイントはヒットしますが、プロジェクト1と2のブレークポイントはヒットしません。

ソリューションのすべてのプロジェクトにブレークポイントを設定し、選択したスタートアッププロジェクトが何であっても、ブレークポイントをヒットさせることができるようにしたいと思います。WCFプロジェクトでトレースを有効にし、例外に詳細を含めてみました。どちらも機能していません。何かアドバイス?

4

5 に答える 5

1

[デバッグ]|[プロセスのアタッチ]ダイアログで、VSがアタッチされているプロセスを確認しましたか?

WCFサービスを実行している開発Webサーバーに接続されていないのではないかと思います。ASP.NETアプリケーションを使用して開始した場合は、他の開発Webサービスに添付ファイルを追加してみてください。

于 2009-09-11T21:53:17.223 に答える
0

単体テストについては触れていませんが、個々のプロジェクトに一連の単体テストが含まれていると、各プロジェクトの個々の動作に自信が持てるようになり、その結果、統合テストがはるかに簡単になります。

あなたが説明している種類のブレークポイント修正テストは、可動部分が非常に多いアプリケーションでは非常に難しく、再現性がありません。

于 2009-09-11T21:42:17.440 に答える
0

あなたの説明に基づくと(そして私は間違っているかもしれませんが)、少なくとも2つの異なるアプリケーション、つまりプロセスがあるように思われます。Visual Studioの単一のインスタンスで複数のプロセスをデバッグすることは明らかに可能ですが(ここを参照)、私がこれまでに行ったこと(またはそのことについて考えたことさえありません)ではありません。

私は通常、デバッグするプロセスごとにデバッガーのインスタンスを実行します。これを行う簡単な方法は、各アプリケーションのメインのスタートアップ関数に次のコード行を配置することです。

System.Diagnostics.Debugger.Break();

Windowsエクスプローラーからアプリケーションを実行すると、必要なデバッガーを選択するように求められます。デバッグするアプリケーションごとにデバッガーの新しいインスタンスを作成するだけで、そこからブレークポイントを設定できます。

私の元のコメントを訂正してくれたPeterOehlertに感謝します。

于 2009-09-11T22:02:40.527 に答える
0

3つのプロセスすべてに確実にアタッチできますが、3つすべての透過的なステップインが行われるかどうかはわかりません。

現在の設定を使用してから、[デバッグ]-> [プロセスにアタッチ]を選択して、WCFプロジェクトを追加します。この時点で、ASP側またはSilverlight側のいずれかからWCFサービスホストにステップインして、シームレスに移行するかどうかを確認できます。これが機能するには2つのプロセスの制限があると思います。失敗した場合は、WCFプロジェクトのインターフェイスにブレークポイントを設定でき、ASPまたはSLプロジェクトにステップオーバーするとブレークポイントに到達します。

いずれかのプロセスでブレークポイントに到達すると、デバッガーはすべてのプロセスを同時に停止します。[デバッグ]->[ウィンドウ]->[プロセス]を使用して各プロセスの場所を移行できます。[デバッグ]->[ウィンドウ]->[スレッド]を使用すると、各プロセスのスレッドを切り替えることができます。

于 2009-09-11T22:35:52.023 に答える
0

これを行うにはいくつかの方法があります。

1)VisualStudioの2つのインスタンスが同時に開きます。別のソリューションでWebサービスとデータアクセスを使用することには、他にもいくつかの利点があります。これを行うと、特定の状況で役立つ、もう一方の実行中に一方を編集することもできます。

2)すべてを1つのソリューションにまとめる十分な理由がある場合は、Webサービスを右クリックし、[デバッグ]-> [新しいインスタンスの開始]に移動して、個別のデバッグセッションを開始できます。次に、Webアプリケーションプロジェクトでも同じことができます。これで、両方が単一のVisualStudioソリューションで実行およびデバッグされます。

ただし、両方がIIS内で実行されている場合、2つのデバッグセッションをIISに接続しようとすると、競合が発生します。それらの1つ(または両方)をローカル開発サーバーで実行してみてください。サービス参照を保持する必要がある場合は、開発サーバーのIP番号を修正できます。

于 2009-09-14T00:15:56.583 に答える