TL; DR
VSIX Package
Analyzer
项目项问题描述:
有很多以项目模板开头的教程(甚至官方文档):Analyzer with Code Fix (NuGet + VSIX)
。但是,在最新版本的.NET编译器平台中,我没有这样的项目模板。
所以,我创建了VSIX project
。然后,我创建了一个Analyzer
项目项。请注意,我没有CodeFix
项,因为我不需要修改代码,只显示一些警告。
这就是我所得到的(我做了一些改动):
[DiagnosticAnalyzer(LanguageNames.CSharp)]
public class MyAnalyzer : DiagnosticAnalyzer
{
public const string DiagnosticId = "MyAnalyzer";
internal static readonly LocalizableString Title = "MyAnalyzer Title";
internal static readonly LocalizableString MessageFormat = "MyAnalyzer";
internal const string Category = "MyAnalyzer Category";
internal static DiagnosticDescriptor Rule = new DiagnosticDescriptor(DiagnosticId, Title, MessageFormat, Category, DiagnosticSeverity.Warning, true);
public override ImmutableArray<DiagnosticDescriptor> SupportedDiagnostics
=> ImmutableArray.Create(Rule);
public override void Initialize(AnalysisContext context)
{
context.RegisterSyntaxNodeAction(Analyze, SyntaxKind.IfStatement);
}
private void Analyze(SyntaxNodeAnalysisContext context)
{
IfStatementSyntax ifStatement = context.Node as IfStatementSyntax;
if(ifStatement == null)
return;
context.ReportDiagnostic(
Diagnostic.Create(
Rule,
context.Node.GetLocation(),
"Hey, this is an IF statement."));
}
}
}
那就是它。该项目仅包含此文件,.vsixmanifest
和packages.config
。
当我在调试模式下运行项目时(使用F5),实验实例已加载,我可以在Extensions and Updates
中看到包。但是,没有命中断点(没有加载符号)并且分析器在分析器列表中(在解决方案资源管理器中)不可见。
然后我执行以下操作:
然后突然加载符号,调试器在断点处停止。
有没有办法在实验实例中自动加载analzyer?我错过了一些配置吗?
答案 0 :(得分:3)