即使Roslyn Diagnostic Analyzer出现了一些错误,编译仍然成功

DiagnosticAnalyzer是一个基于Roslyn的自定义扩展,其DiagnosticDescriptorDiagnosticSeverity.Error如下所示

 internal static DiagnosticDescriptor Rule = new DiagnosticDescriptor(DiagnosticId, Description, MessageFormat, Category, DiagnosticSeverity.Error); 

当使用扩展时,它确实显示了针对诊断分析器自定义规则的代码红色波形,强调它是一个错误 ,它甚至显示在Visual Studio的错误列表窗口中。

但是在编译时 ,此代码在Visual Studio的输出窗口中获取编译成功消息。 这违背了将错误强调为诊断分析器严重性的整个概念。

编译错误成功

如果这是Roslyn的默认工作方式,那么我们是否有办法停止编译

我正在使用:

  1. Visual Studio 2013 Update 3
  2. Roslyn最终用户Preview.vsix
  3. 包含使用Roslyn SDK Project Templates.vsix制作的DiagnosticAnalyzer的VSIX扩展

将诊断集成到实际构建管道中已经发生在VS“14”中。 如果您在那里尝试相同的方案,它将导致编译错误。

此外,诊断现在附加到项目并通过NuGet分发,以便整个团队,持续集成构建等一致地发生错误。

我正在使用VS2015 Update 3,这个问题仍然存在。 我想强制执行局部变量和参数命名约定,事实certificate,Roslyn默认情况下不支持这些,只能通过解决方法: SO link

然后,如果出现这样的错误,我想让构建失败,但Roslyn不具备此function。

Roslyn可能是一个非常强大和强大的工具,但它仍然在最基本的任务中失败。 太遗憾了。

(对于主持人:我仍然没有50个代表评论,我认为我不会有)