Visual studio 2015 如何集成到visual studio 2015构建管道中?

Visual studio 2015 如何集成到visual studio 2015构建管道中?,visual-studio-2015,visual-studio-extensions,Visual Studio 2015,Visual Studio Extensions,我正在为visual studio 2015编写一个VSIX扩展,它订阅生成事件并异步执行附加验证,如下所示: class BuildEventController { private readonly IThreadHandling _threading; private readonly BuildEvents _events; private readonly EnvDTE.DTE2 _dte2; public BuildEventController(.

我正在为visual studio 2015编写一个VSIX扩展,它订阅生成事件并异步执行附加验证,如下所示:

class BuildEventController
{
    private readonly IThreadHandling _threading;
    private readonly BuildEvents _events;
    private readonly EnvDTE.DTE2 _dte2;

    public BuildEventController(...)
    {
        _dte2 = ... ;
        _threading = ... // instance of IThreadHandling
        _events = _dte2.Events.BuildEvents;
    }

    public override void Initialize()
    {
        _events.OnBuildProjConfigBegin += OnBuildProjectStarted;
    }

    private void OnBuildProjectStarted(...)
    {
        _threading.AsyncPump.RunAsync(async delegate
        {
            await TaskScheduler.Default;
            // do long-running work async
            // then... cancel the build if errors
            await _threading.AsyncPump.SwitchToMainThreadAsync();
            CancelBuild();
        });
    }

    private void CancelBuild()
    {
        _dte2.ExecuteCommand("Build.Cancel");
    }
}
问题是实际的构建(编译)可能在我的任务完成之前完成,我最终将失去取消构建的能力(即使我仍然可以将错误添加到“错误”选项卡)


有没有办法安排我的工作在实际编译之前或之后执行,以便将其作为构建过程中的附加步骤执行?

您希望执行哪种类型的构建验证?根据您的场景,实际上有许多不同(可能更好)的连接位置。@JasonMalinowski,从技术上讲,这不是构建验证。这是对其他项目资产的有效性/错误的额外验证,想想bundles验证、通过jslint的js验证等等。还有,您在这里试图针对哪种语言?@JasonMalinowski,比如JavaScript。但它不是必需的语言,它可以只是一组用于扩展需要验证的公司开发的工具或框架的配置文件?根据您的场景,实际上有许多不同(可能更好)的连接位置。@JasonMalinowski,从技术上讲,这不是构建验证。这是对其他项目资产的有效性/错误的额外验证,想想bundles验证、通过jslint的js验证等等。还有,您在这里试图针对哪种语言?@JasonMalinowski,比如JavaScript。但它不是必需的语言,它可以只是一组配置文件,用于扩展需要验证的公司开发的工具或框架。