2015-10-20 11 views
5

Visual Studioを使用している場合、プロジェクトを継続的に構築したいと思います。つまり、保存するたびにビルドを開始します。私は大規模な(35 +プロジェクト)のソリューションで作業する傾向があるので、すべてを最新のものにすることで、アプリケーションの起動にかかる時間が節約されます。Visual Studio 2015の保存後に自動的にビルドしますか?

入力時にRoslynがコンパイルエラーを表示しますが、実際には完全なビルドプロセスが実行されないため、テストのデバッグや実行前にビルドと完了を待つ必要があります。

Redgateの.Net Demonはこの種のバックグラウンドコンパイルに使用されていましたが、本当に便利でしたが、「Visual Studio 2015はMicrosoftの新しいRoslynコンパイラを導入し、.NET Demonを冗長化すると考えています。

ファイルが保存されているか、プロジェクトがIDEに変更された後に自動的にビルドを開始するのVisual Studio 2015を持っているオプションまたは拡張子がありますか?

+0

.NETデーモンは、変更されたプロジェクトだけを再構築するため、非常に高速です。 – Guillaume86

答えて

2

runs Cppcheck on the saved fileそのビジュアル司令官のためのサンプルの拡張機能があります。 CppcheckをDTE.ExecuteCommand( "Build.BuildSolution")に置き換えることができます。

+0

それは私が必要とするもののように見えます。ありがとう!また、Visual Commanderは一般的には本当に便利です。 –

0

建物のセルゲイVlasovの答えに、ここでビジュアル司令官の拡張子の修正版です。

using EnvDTE; 
using EnvDTE80; 

public class E : VisualCommanderExt.IExtension 
{ 
    private EnvDTE80.DTE2 DTE; 
    private EnvDTE.Events events; 
    private EnvDTE.DocumentEvents documentEvents; 
    private EnvDTE.BuildEvents buildEvents; 

    public void SetSite(EnvDTE80.DTE2 DTE_, Microsoft.VisualStudio.Shell.Package package) 
    { 
     DTE = DTE_; 
     events = DTE.Events; 
     documentEvents = events.DocumentEvents; 
     buildEvents = events.BuildEvents; 

     buildEvents.OnBuildProjConfigDone += OnBuildProjectDone; 
     documentEvents.DocumentSaved += OnDocumentSaved; 
    } 

    public void Close() 
    { 
     documentEvents.DocumentSaved -= OnDocumentSaved; 
     buildEvents.OnBuildProjConfigDone -= OnBuildProjectDone; 
    } 

    private void OnDocumentSaved(EnvDTE.Document doc) 
    { 
     if(doc.Language == "CSharp") 
     { 
      var sb = DTE.Solution.SolutionBuild; 
      sb.Build(); 
     } 
    } 

    private void OnBuildProjectDone(string project, string projectConfig, string platform, string solutionConfig, bool success) 
    { 
     //OutputString("Project " + project + " " + (success ? "build" : "failed to build")); 
    } 

    private void OutputString(string line) 
    { 
     GetOutputPane().OutputString(line + System.Environment.NewLine); 
    } 

    private EnvDTE.OutputWindowPane GetOutputPane() 
    { 
     string cppcheckPaneName = "VCmd"; 
     foreach (EnvDTE.OutputWindowPane pane in 
      DTE.ToolWindows.OutputWindow.OutputWindowPanes) 
     { 
      if (pane.Name == cppcheckPaneName) 
       return pane; 
     } 
     return DTE.ToolWindows.OutputWindow.OutputWindowPanes.Add(cppcheckPaneName); 
    } 
} 
+0

ちょっと、先ほどの方法であなたのソリューションを構築する拡張機能を作成しましたが、DTEメソッドを使ってソリューションをビルドすると、ビルドの実行中に入力するときにカーソルストールとフォーカスの盗難問題が発生すると考えました。今週末は違ったアプローチで、とてもうまくいった。それはギャラリーに今だ、と私はフィードバックを探しています:https://visualstudiogallery.msdn.microsoft.com/2b31b977-ffc9-4066-83e8-c5596786acd0 – Armin

+0

@Arminは、私はそれが行くあげます!これを回答として追加すると、あなたの内線番号へのトラフィックを増やす可能性が増し、あなたに最高の投票を与えることができます:) –

+1

ありがとうスティーブ! "---------- BuildOnSave:Project:CTM-API、設定:任意のCPUをデバッグ---------このエラーが発生するのは、1つ以上のプロジェクトがあるソリューションでは、 – Armin

6

私がいることを正確にBuildOnSaveと呼ばれる新しいオープンソースの拡張機能の開発を開始しています。ファイルを保存するときには、現在のソリューションやスタートアッププロジェクトをビルドします。

これは、Visual Studioの拡張ギャラリーで利用可能です:https://visualstudiogallery.msdn.microsoft.com/2b31b977-ffc9-4066-83e8-c5596786acd0

は、あなたがそれを試してみることができますように。私はフィードバックを非常に感謝します。

+0

です。 ---- C:\ Cyber​​Gymプロジェクト\ \ Devの\ CTM \ CTM.sln.metaproj:エラーMSB4057:ターゲット "CTM-APIは、" プロジェクトに存在しません Doneを構築するプロジェクト "CTM.sln" - 。FAILED ========== BuildOnSave:0は成功したが、0は==========」 が、VSのすべてでてmanualyプロジェクトをビルドするには、素晴らしい作品に失敗しました。とにかく Tnx – Dudi

+0

ちょっとDudi、問題を報告してくれてありがとう。私は現在、この問題を修正した可能性のある新しいバージョンをテスト中です。可能であれば、https://github.com/pragmatrix/BuildOnSave/releasesから最新のリリースを試して、問題をgithub issue trackerに報告できますか?それは素晴らしいだろう! – Armin

+0

Does not work on VS2017 – Ascherer

関連する問題