即使Roslyn Diagnostic Analyzer出现了一些错误,编译仍然成功
DiagnosticAnalyzer
是一个基于Roslyn的自定义扩展,其DiagnosticDescriptor
与DiagnosticSeverity.Error
如下所示
internal static DiagnosticDescriptor Rule = new DiagnosticDescriptor(DiagnosticId, Description, MessageFormat, Category, DiagnosticSeverity.Error);
当使用扩展时,它确实显示了针对诊断分析器自定义规则的代码的红色波形,强调它是一个错误 ,它甚至显示在Visual Studio的错误列表窗口中。
但是在编译时 ,此代码在Visual Studio的输出窗口中获取编译成功消息。 这违背了将错误强调为诊断分析器严重性的整个概念。
如果这是Roslyn的默认工作方式,那么我们是否有办法停止编译 。
我正在使用:
- Visual Studio 2013 Update 3
- Roslyn最终用户Preview.vsix
- 包含使用Roslyn SDK Project Templates.vsix制作的DiagnosticAnalyzer的VSIX扩展
将诊断集成到实际构建管道中已经发生在VS“14”中。 如果您在那里尝试相同的方案,它将导致编译错误。
此外,诊断现在附加到项目并通过NuGet分发,以便整个团队,持续集成构建等一致地发生错误。
我正在使用VS2015 Update 3,这个问题仍然存在。 我想强制执行局部变量和参数命名约定,事实certificate,Roslyn默认情况下不支持这些,只能通过解决方法: SO link
然后,如果出现这样的错误,我想让构建失败,但Roslyn不具备此function。
Roslyn可能是一个非常强大和强大的工具,但它仍然在最基本的任务中失败。 太遗憾了。
(对于主持人:我仍然没有50个代表评论,我认为我不会有)