COM 経由でレガシー アプリケーションから使用する .Net (C#) DLL を作成しました。レガシ アプリを起動し、COM オブジェクトをインスタンス化して使用できますが、問題ありません。Visual Studio を起動 (または Visual Studio に切り替え) し、[デバッグ] または [プロセスにアタッチ] を選択して、レガシ アプリ プロセスを選択します。次に、すべてのソース ファイルの横に「ロック」アイコンが表示され、VS タイトル バーのプロジェクト名の横に「(実行中)」が表示されます。ブレークポイントを設定でき、レガシ アプリから COM オブジェクトを実行すると、ステップ スルーしてデバッグできます。ただし、VS では (もちろん) コードを編集して問題を修正することはできません (または、コメントのスペル ミスを修正することさえできません)。[Debug] / [Windows] / [Modules] ウィンドウに、レガシー プロセスと自分の DLL が表示され、そのシンボルが自分の DLL 用に読み込まれました。レガシーアプリを終了すると(当然のことながら)「ロック」が解除されます
COM オブジェクトのプロジェクトを開始するように設定し (ソリューション設定で)、プロジェクトの [デバッグ] ページを [外部プログラムの開始] に設定し、F5 キーを押してレガシ アプリを開始すると、COM オブジェクトをインスタンス化して実行できます。タイトル バーに再び「(実行中)」と表示され、ロック アイコンが表示されます。ブレークポイントにカーソルを合わせると、現在の場所を示すツールチップが表示されます --
filename.cs、行 x 文字 y ('namespace.class.method()') プロセス 'legacyapp.exe'
しかし、ブレークポイントは停止せず、モジュール ウィンドウは空です。レガシ アプリも DLL もそこに表示されません。(したがって、デバッグが機能しないことは驚くべきことではないと思います。)
私はVisual Studio 2010で「外部プログラムを開始して.NetベースのCOM DLLをデバッグする」ことを成功させたことを知っています。それを機能させることができますか?