我正在尝试编程方式调试IISExpress进程。在使用Visual Studio附加到进程窗口时,我必须选择Managed Code作为要附加的类型。如果选择自动检测,则VS会尝试将IISExpress调试为x86 /本机应用程序,这是行不通的。以下代码(来自此答案)使用DTE附加调试器,但似乎没有将其附加为托管代码。
也许DTE库无法建议调试器附加到托管代码?
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库无法建议调试器附加到托管代码?
"native"
传递到attach2
方法中来简化。就像这里描述的一样:http://msdn.microsoft.com/en-us/library/envdte80.process2.attach2.aspx。 - Herman