2009-08-12 3 views
2

실행중인 Visual Studio 인스턴스에 연결하여 명령을 실행할 수있는 응용 프로그램을 작성하는 방법이 있습니까? 예를 들어, 내가 클릭 할 때 Visual Studio의 이미 열려있는 인스턴스에 "Build.BuildSolution"명령을 실행하여 빌드를 시작하게하는 버튼이있는 WPF 응용 프로그램을 작성할 수 있습니까?별도의 프로세스에서 Visual Studio 인스턴스 자동화

SendKeys를 사용하여 Ctrl + Shift + B를 보낼 수도 있지만 Visual Studio를 자동화하고 이름으로 명령을 호출하기위한 실제 API에 쓸 수있는 방법이 있는지 알고 싶습니다.

+1

왜 비주얼 스튜디오 추가 기능을 만드는 것이 좋을까요? 명명 된 파이프에서 명령을 수신하는 경우에도. –

+0

그럴 수있는 유일한 방법이라면 VS 추가 기능을 만들 수는 있지만, 바깥 쪽에서 VS를 자동화하는 방법이 있다면 바쁠만큼 많은 고통을 느끼고 VS를 여러 번 다시 시작해야합니다. –

답변

4

다음은 실행중인 Visual Studio에 연결하고 빌드 명령을 실행하는 C# 프로그램입니다. DTE.9 부분은 "비주얼 스튜디오 2008"를 의미 - VS위한 VS 2005, 또는 DTE.10에 대한 DTE.8을 사용하여 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의 코드를 붙여 넣으면 작동합니다.)

0

앱의 빌드/패키징을 자동화하려는 경우 MSBuild을 살펴 봐야합니다. 이는 Visual Studio의 대부분의 기능을 자동화 할 수있는 Microsoft의 빌드 엔진입니다.

+0

네,하지만 (a) Visual Studio에서 후속 실행이 즉시 시작되고 (b) 빌드가 예제 일 뿐이므로 다시 빌드했음을 알리고 싶습니다. - 실행하려는 유일한 명령이 아닙니다. 또한 궁극적으로 VS 밖에서 물건을 쿼리하고 싶습니다. 예를 들어 에디터 저장 상태 등. 그러나 "이름으로 명령 발행"과 같은 간단한 질문은 시작하기 가장 좋은 장소와 같았습니다. –

관련 문제