从单独的进程自动化的Visual Studio实例 [英] Automating Visual Studio instance from separate process

查看:152
本文介绍了从单独的进程自动化的Visual Studio实例的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

有没有写,可以连接到Visual Studio和发出指令给它的运行实例的应用程序的方法吗?例如,我可以写一个按钮,点击后,发出BUILD.BUILDSOLUTION命令到Visual Studio的一个已经打开的实例一个WPF应用程序,使它开始构建?

Is there a way to write an application that can connect to a running instance of Visual Studio and issue commands to it? For example, could I write a WPF app with a button that, when clicked, issues a "Build.BuildSolution" command to an already-open instance of Visual Studio, causing it to start a build?

我敢肯定,我可以使用的SendKeys发送按Ctrl + Shift + B,但我想知道是否有写一个实际的API自动Visual Studio中,并通过名称调用命令的方式。

I'm sure I could use SendKeys to send Ctrl+Shift+B, but I want to know if there's a way to write to an actual API to automate Visual Studio, and invoke commands by name.

推荐答案

下面是一个连接到运行Visual Studio和问题的生成命令C#程序。在 DTE.9 部分是指的Visual Studio 2008 - 用 DTE.8 2005年VS,或 DTE.10 2010年VS

Here's a C# program that connects to a running Visual Studio and issues a Build command. The DTE.9 part means "Visual Studio 2008" - use DTE.8 for VS 2005, or DTE.10 for VS 2010.

using System;
using System.Runtime.InteropServices;
using EnvDTE80;

namespace SORemoteBuild
{
    class Program
    {
        [STAThread]
        static void Main(string[] args)
        {
            // Get an instance of the currently running Visual Studio IDE.
            EnvDTE80.DTE2 dte2;
            dte2 = (EnvDTE80.DTE2)System.Runtime.InteropServices.Marshal.
                                      GetActiveObject("VisualStudio.DTE.9.0");
            dte2.Solution.SolutionBuild.Build(true);
        }
    }

    public class MessageFilter : IOleMessageFilter
    {
        // ... Continues at http://msdn.microsoft.com/en-us/library/ms228772.aspx

(带STAThread和MessageFilter的一派胡言是由于外部线程多线程应用程序和Visual Studio之间的争用问题,这意味着什么,从的 http://msdn.microsoft.com/en-us/library/ms228772.aspx 使得它的工作。)

这篇关于从单独的进程自动化的Visual Studio实例的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆