1

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をデバッグする」ことを成功させたことを知っています。それを機能させることができますか?

4

1 に答える 1

1

Visual Studio 2012 で MSACCESS を介して COM-DLL をデバッグする際にも同じ問題がありました。

解決策: オフィス スタート プログラムの構成ファイルを作成します。例: C:\Program Files (x86)\Microsoft Office\Office10\MSACCESS.EXE.config を作成して挿入

<?xml version="1.0"?>
<configuration>
   <startup>
      <supportedRuntime version="v2.0.50727"/>
   </startup>
</configuration>
于 2013-02-28T13:18:51.880 に答える