gpt4 book ai didi

c# - Visual Studio 以编程方式附加到托管进程

转载 作者:行者123 更新时间:2023-11-30 15:32:05 24 4
gpt4 key购买 nike

我正在尝试以编程方式附加到 IISExpress 进程以进行调试。使用 Visual Studio 附加到进程窗口时,我必须选择托管代码作为要附加到的类型。如果改为选择自动检测,VS 会尝试将 IISExpress 作为 x86/ native 应用程序进行调试,但该应用程序不起作用。

使用 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 库无法建议调试器应该附加到托管代码?

最佳答案

您需要使用 Process2.Attach2() method相反,从 VS2005 开始可用。它需要一个调试器引擎参数,指定您要使用的调试器类型。

示例代码 is here .

关于c# - Visual Studio 以编程方式附加到托管进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19658269/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com