Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何获取上次调试会话期间调试器附加到的进程_C#_Vsx_Envdte_Vs Extensibility_Vspackage - Fatal编程技术网

C# 如何获取上次调试会话期间调试器附加到的进程

C# 如何获取上次调试会话期间调试器附加到的进程,c#,vsx,envdte,vs-extensibility,vspackage,C#,Vsx,Envdte,Vs Extensibility,Vspackage,我正在尝试编写VisualStudio包,它允许附加到上一次调试会话中选择的进程。基本上,我知道如何附加到流程: var dte = GetGlobalService(typeof(DTE)) as DTE2; if (dte != null) { IList<Process2> processes = dte.Debugger.LocalProcesses.Cast<Process2>() .Where(process =

我正在尝试编写VisualStudio包,它允许附加到上一次调试会话中选择的进程。基本上,我知道如何附加到流程:

var dte = GetGlobalService(typeof(DTE)) as DTE2;
if (dte != null)
{
    IList<Process2> processes =
        dte.Debugger.LocalProcesses.Cast<Process2>()
            .Where(process => process.Name.IndexOf("process.exe", StringComparison.Ordinal) != -1)
            .ToList();
    foreach (var p in processes)
    {
        p.Attach();
    }
}
var dte=GetGlobalService(typeof(dte))作为DTE2;
如果(dte!=null)
{
IList过程=
dte.Debugger.localprocesss.Cast()
.Where(process=>process.Name.IndexOf(“process.exe”,StringComparison.Ordinal)!=-1)
.ToList();
foreach(过程中的var p)
{
p、 附加();
}
}

问题是,如何获得我上次附加的流程?是否存储了有关此的任何信息?如果没有,如何编写有助于我的逻辑?

我不知道任何此类信息。 另一种可能有效的方法是向每个服务器添加一个WCF服务 过程此服务将使您俩都能够启动调试器, 并检查是否已启动调试器

 public class DebugService : IDebugService
    {
        public void LaunchDebugger()
        {
            //TODO - write some code indicating that this 
            //process was bebugged. e.g. - mark a flag in DB or file
            Debugger.Launch();
        }

        public bool WasDebuggedLastTime()
        {
            //TODO - write code to check if this process was debugged
        }

    }

IVsDebuggerEvents
(Microsoft.VisualStudio.Shell.Interop.dll)在调试器更改模式时提供通知,而调试引擎使用
IDebugEventCallback2
(Microsoft.VisualStudio.debugger.Interop.dll)发送调试事件。使用这些接口可以收集所需信息

更新:
如何执行此操作的详细示例显示在我编写的github存储库中,该存储库允许将调试器附加到以前调试的进程。

我不选择此选项。