디버깅을 위해 프로그래밍 방식으로 IISExpress 프로세스에 연결하려고합니다. Visual Studio 첨부 프로세스 창에서 첨부 할 유형으로 관리 코드를 선택해야합니다. 대신 자동 검색을 선택하면 VS는 IISExpress를 작동하지 않는 x86/네이티브 응용 프로그램으로 디버깅하려고 시도합니다.Visual Studio가 프로그래밍 방식으로 관리되는 프로세스에 연결
DTE를 사용하는 다음 코드 (answer)는 디버거를 부착하지만 관리 코드로 부착하지 않습니다.
public static void AttachVisualStudioToProcess(Process visualStudioProcess, Process applicationProcess)
{
_DTE visualStudioInstance;
if (TryGetVsInstance(visualStudioProcess.Id, out visualStudioInstance))
{
//Find the process you want the VS instance to attach to...
DTEProcess processToAttachTo = visualStudioInstance.Debugger.LocalProcesses.Cast<DTEProcess>().FirstOrDefault(process => process.ProcessID == applicationProcess.Id);
//Attach to the process.
if (processToAttachTo != null)
{
processToAttachTo.Attach();
ShowWindow((int)visualStudioProcess.MainWindowHandle, 3);
SetForegroundWindow(visualStudioProcess.MainWindowHandle);
}
else
{
throw new InvalidOperationException("Visual Studio process cannot find specified application '" + applicationProcess.Id + "'");
}
}
}
아마도 DTE 라이브러리는 디버거가 관리 코드에 연결되어야한다고 제안 할 수 없습니까?
한스, 당신은 전설입니다. 이것은 완벽하게 작동합니다! 약간 수정 된 코드를 다른 답변에 게시 할 것입니다. – Max
''native "문자열 인자를 직접'attach2' 메쏘드에 전달함으로써 코드를 단순화 할 수 있습니다. 여기에 설명 된 것처럼 : http://msdn.microsoft.com/en-us/library/envdte80.process2.attach2.aspx. – Herman