C# 如何使Visual Studio扩展的生成失败
我正在构建一个包管理器,我需要在每次构建之前恢复包 我已经钩住了DTE.OnBuildBegin来实现这一点,它工作得很好,但是如果出现错误,我需要使构建失败C# 如何使Visual Studio扩展的生成失败,c#,.net,visual-studio,visual-studio-extensions,C#,.net,Visual Studio,Visual Studio Extensions,我正在构建一个包管理器,我需要在每次构建之前恢复包 我已经钩住了DTE.OnBuildBegin来实现这一点,它工作得很好,但是如果出现错误,我需要使构建失败 DTE dte = (DTE)GetService(typeof(DTE)); dte.ExecuteCommand("Build.Cancel"); 我发现我可以使用ErrorListProvider添加到错误列表中,这非常有效,但是构建仍然在继续并成功。更糟糕的是,如果单击“运行”而不是“构建”,则恢复失败,但代码仍在运行。因为Vi
DTE dte = (DTE)GetService(typeof(DTE));
dte.ExecuteCommand("Build.Cancel");
我发现我可以使用ErrorListProvider添加到错误列表中,这非常有效,但是构建仍然在继续并成功。更糟糕的是,如果单击“运行”而不是“构建”,则恢复失败,但代码仍在运行。因为VisualStudio在运行时使用不同的视图,所以在运行时看不到错误列表
如何使生成失败?以下代码将取消生成
DTE dte = (DTE)GetService(typeof(DTE));
dte.ExecuteCommand("Build.Cancel");
也许您可以考虑使用StopOnFirstBuildError扩展工具:StopOnFirstBuildError不执行我想要的操作,它不根据错误列表检测错误,它根据实际的项目生成执行,但是StopOnFirstBuildError会取消生成,所以我看了一下它们的源代码,这给了我如何做的线索。(见我的答案)