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

时间:2014-09-30 06:16:46

标签: c# visual-studio-2013 roslyn vsix

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

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

使用扩展程序时,它确实会显示代码 上的 红色波形,这违反了诊断分析程序自定义规则,强调是错误,它甚至显示在Visual Studio的错误列表窗口中。

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

Error compiled successfully

如果这是Roslyn的默认工作方式,那么我们是否可以解决停止编译问题

我正在使用:

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

2 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:1)

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

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

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

(对于主持人:我仍然没有50位代表发表评论,而且我认为我不会有这样做)