如何从 VS 扩展引发 Visual Studio 错误(破坏构建过程)?

问题描述 投票:0回答:2

我正在开发一个 Visual Studio 扩展,我需要向用户显示 VS 错误列表中的错误。我希望这些错误能够阻止/破坏解决方案的构建/运行,即类似 this. 我怎样才能实现这一点?

我尝试了两种方法,但它们都只显示错误,它们确实注意到破坏/阻止构建解决方案:

  1. 调整ErrorList VSSDK 示例项目,以便引发错误而不是消息。 Errors are shown properly但是建造仍然是可能的。
  2. 按照此处所述使用ErrorListProvider。与 1 相同的问题。

我也研究过使用Diagnostics,但你需要ReportDiagnostic,这似乎与代码分析器特别相关。

c# error-handling build-process visual-studio-extensions
2个回答
0
投票

您真正需要的是构建错误。为此,您应该使用 Roslyn 技术。请参阅此类似问题

错误列表中出现错误但无法中断构建的原因:

根据这个类似问题,根据设计,Nuget 中的规则可以破坏 VS IDE 中的构建,而 VS 扩展中的规则则不能。因此,如果需要,我们可以使用 nuget 中的 MSBuild 魔法来破坏构建。


0
投票

当且仅当您的扩展分析 C# 或 VB 代码时,您才应该扩展 Roslyn

我的用例两者都没有,但我需要提出阻止编译的错误。

解决方案:

取消正在进行的构建

var dte = Package.GetGlobalService(typeof(DTE)) as DTE2;

//  will be called if debugging, running, or building
dte.Events.BuildEvents.OnBuildBegin += (cancellationToken, progress) => {
    if(isHasErrors)  // TODO check for errors
        dte.ExecuteCommand("Build.Cancel");
};
© www.soinside.com 2019 - 2024. All rights reserved.