public int Attach(IDebugProgram2[] programs, IDebugProgramNode2[] rgpProgramNodes, uint celtPrograms, IDebugEventCallback2 pCallback, enum_ATTACH_REASON dwReason) { var program = programs[0]; IDebugProcess2 process; program.GetProcess(out process); Guid processId; process.GetProcessId(out processId); if (processId != this.processId.guidProcessId) { return(VSConstants.S_FALSE); } EngineUtils.RequireOk(program.GetProgramId(out programId)); Task.Run(() => { waiter.WaitOne(); var ipAddress = HostUtils.ResolveHostOrIPAddress(settings.Host); Session.Run(new SoftDebuggerStartInfo(new SoftDebuggerConnectArgs("", ipAddress, 6438)), new DebuggerSessionOptions { EvaluationOptions = EvaluationOptions.DefaultOptions, ProjectAssembliesOnly = false }); }); MonoEngineCreateEvent.Send(this); MonoProgramCreateEvent.Send(this); return(VSConstants.S_OK); }