保存后自动构建,Visual Studio 2015?

Automatically Build after save, for Visual Studio 2015?

当使用 Visual Studio 时,我希望它能持续构建我的项目。也就是说,每次保存后,开始构建。我倾向于处理大型(超过 35 个项目)解决方案,因此在启动应用程序时让所有内容保持最新状态可以节省我的时间。

Roslyn 在您键入时会给出编译器错误,但它实际上并没有 运行 完整的构建过程,这意味着您仍然需要告诉 VS 构建并等待它完成调试或 运行正在测试。

Redgate的.Net Demon曾经做过这种后台编译,确实很好用,但是已经停产了,因为"Visual Studio 2015 will introduce Microsoft's new Roslyn compiler, with improvements which we believe make .NET Demon redundant."

在 IDE 中保存文件或修改项目后,Visual Studio 2015 是否有选项或扩展程序自动启动构建?

Visual Commander 有一个示例扩展 runs Cppcheck on the saved file。您可以将 Cppcheck 替换为 DTE.ExecuteCommand("Build.BuildSolution");

基于 Sergey Vlasov 的回答,这里是 Visual Commander 扩展的修改版本;

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);
    }
}

我开始开发一个名为 BuildOnSave 的新开源扩展,它确实是这样做的:它会在保存文件时构建当前解决方案或启动项目。

它在 Visual Studio 扩展库中可用:https://visualstudiogallery.msdn.microsoft.com/2b31b977-ffc9-4066-83e8-c5596786acd0

也许你可以试一试。我非常感谢反馈。