2009-08-12 14 views
2

実行中のVisual Studioインスタンスに接続してコマンドを発行できるアプリケーションを作成する方法はありますか?たとえば、クリックしたときにVisual Studioの既に開いているインスタンスに「Build.BuildSolution」コマンドを発行してビルドを開始するボタンを含むWPFアプリケーションを作成できますか?別のプロセスからVisual Studioインスタンスを自動化

SendKeysを使ってCtrl + Shift + Bを送ることはできますが、実際のAPIに書き込んでVisual Studioを自動化し、名前でコマンドを呼び出す方法があるかどうかを知りたいと思います。

+1

Visual Studioアドインを作成するだけではどうですか?名前付きパイプでこれらのコマンドをリッスンする場合でも。 –

+0

これは唯一の方法であれば、おそらくVSアドインを作ることができますが、VSを外から自動化する方法があれば、何度もVSを再起動することは大変なことです。 –

答えて

4

実行中のVisual Studioに接続し、ビルドコマンドを発行するC#プログラムです。 DTE.9部分は、「Visual Studioの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

アプリのビルド/パッケージ化を自動化しようとしているのであれば、Visual Studioのほとんどの機能のスクリプト自動化を可能にするMicrosoftのビルドエンジンであるMSBuildを調べる必要があります。

+0

はい、ですが、(a)Visual Studioで再ビルドされているため、後で実行がすぐに開始され、(b)ビルドが単なる例であったため、発行する唯一のコマンドではありません。私は最終的に、エディタの状態を保存するように、VSから物事を問い合わせることも望みます。しかし、「名前でコマンドを発行する」のような簡単な質問は、始めるのに最適な場所のようでした。 –

関連する問題