我正在尝试编写一个将调试器附加到命名进程的 Visual Studio 包。
我在我的包中使用以下代码。
var info = new VsDebugTargetInfo
{
dlo = DEBUG_LAUNCH_OPERATION.DLO_AlreadyRunning,
bstrExe = strProcessName,
bstrCurDir = "c:\\",
bstrArg = "",
bstrEnv = "",
bstrOptions = null,
bstrPortName = null,
bstrMdmRegisteredName = null,
bstrRemoteMachine = "",
cbSize = (uint)System.Runtime.InteropServices.Marshal.SizeOf<VsDebugTargetInfo>(),
grfLaunch = (uint)(__VSDBGLAUNCHFLAGS.DBGLAUNCH_DetachOnStop| __VSDBGLAUNCHFLAGS.DBGLAUNCH_StopDebuggingOnEnd| __VSDBGLAUNCHFLAGS.DBGLAUNCH_WaitForAttachComplete),
fSendStdoutToOutputWindow = 1,
clsidCustom = VSConstants.CLSID_ComPlusOnlyDebugEngine
};
VsShellUtilities.LaunchDebugger(ServiceProvider, info);
但是我得到以下无用的错误:
Exception : Unable to attach. Operation not supported. Unknown error: 0x80070057.
该代码显然正在做某事,因为如果该过程尚未开始,我会收到此错误
Exception : Unable to attach. Process 'xxxxxxxx' is not running on 'xxxxxxxx'.
该进程是一个托管的 .net 4 进程,我可以通过 VS UI 附加到它。
对于上下文,我试图替换我在 VS 2010 中使用的简单宏来完成相同的工作,但显然不能在较新版本的 Visual Studio 中运行。