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

How to raise Visual Studio errors (that break the build process) from a VS extension?

我正在开发 Visual Studio 扩展,我需要向用户显示 VS 错误列表中的错误。我希望这些错误 prevent/break 解决方案的 building/running,即 this. 我怎样才能做到这一点?

我尝试了两种方法,但它们都只显示错误,它们确实记录了 break/prevent 构建解决方案:

  1. 调整 ErrorList VSSDK Example project such that errors instead of messages are raised. Errors are shown properly 但仍然可以构建。
  2. 使用ErrorListProvider as described here。与 1.
  3. 相同的问题

我也看过一些使用 Diagnostics but you need ReportDiagnostic 这似乎与代码分析器特别相关。

您真正需要的是构建错误。为此,您应该使用 Roslyn 技术。看到这个 .

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

根据 this similar issue,来自 Nuget 的规则可以破坏 VS IDE 中的构建,而来自 VS 扩展的规则则不能。因此,如果需要,我们可以使用 nuget 中的 MSBuild 魔法来中断构建。