2つのプロジェクトを含むビジュアルスタジオ2010のソリューションがあります.1つはC#コンソールアプリケーションで、これはFooと呼ばれ、もう1つはCLR C++コンソールアプリケーションですこれをBarと呼ぶことにする。バーはexeでdllではありません。デバッグセッションが開始されると、Fooを実行して起動します。 Fooはコードを使用してバーのプロセスを開始します System.Diagnostics.Process procBar = System.Diagnostics.Process.Start(pathToBarEXE)
私はそのBar.exeを現在実行中のデバッガにプログラムで実装します。 DTEがインタフェースであると、私は(インターネット上のどこにでもそれを見て)それを行うことになっている機能2番目のプロセスを.NETでプログラムでVS2010にアタッチする
public void AttachToProcess(int processId)
{
foreach (EnvDTE.Process process in DTE.Debugger.LocalProcesses)
{
if (process.ProcessID == processId)
{
process.Attach();
DTE.Debugger.CurrentProcess = process;
}
}
}
を持っていますが、機能はコンパイルされません。私はthusly
public void AttachToProcess(int processId)
{
EnvDTE80.DTE2 dte2;
dte2 = (EnvDTE80.DTE2)System.Runtime.InteropServices.Marshal.GetActiveObject("VisualStudio.DTE.10.0");
foreach (EnvDTE.Process process in dte2.Debugger.LocalProcesses)
{
if (process.ProcessID == processId)
{
process.Attach();
}
}
}
機能を変更しているし、それがコンパイルし、実行するが、それはバーのプロセスを発見したときの文が例外をスローした場合、The message filter indicated that the application is busy. (Exception from HRESULT: 0x8001010A (RPC_E_SERVERCALL_RETRYLATER))
私はここで間違って何をしているのですか?