从DTE获取进程ID(EnvDte)

时间:2016-01-05 07:16:39

标签: c# visual-studio envdte

是否可以通过DTE mDte变量获取visual studio实例的进程ID?请参阅下面的代码。

    private static DTE mDte;

    public static void OpenVisualStudio()
    {
        Type visualStudioType = Type.GetTypeFromProgID("VisualStudio.DTE.10.0");
        mDte = Activator.CreateInstance(visualStudioType) as DTE;

        if (mDte != null)
        {
            mDte.MainWindow.Visible = true;
        }

        // get process id of visual studio instance through mDte
    }

2 个答案:

答案 0 :(得分:0)

我做了如下:

    public static int OpenVisualStudio()
    {
        var devenv = Process.Start("devenv.exe");

        if (devenv == null)
        {
            return 0;
        }

        do
        {
            System.Threading.Thread.Sleep(2000);
            mDte = GetDte(devenv.Id);
        }
        while (mDte == null);

        return devenv.Id;
    }

我是从这里得到的: http://blogs.msdn.com/b/kirillosenkov/archive/2011/08/10/how-to-get-dte-from-visual-studio-process-id.aspx

它现在解决了我的问题......

答案 1 :(得分:-1)

DTE对象的Debugger属性具有CurrentProcess属性,其属性为ProcessID

int processId = dte.Debugger.CurrentProcess.ProcessID;