首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何自动处理罗斯林分析器(没有代码修复)

如何自动处理罗斯林分析器(没有代码修复)
EN

Stack Overflow用户
提问于 2016-05-16 07:18:40
回答 1查看 398关注 0票数 3

TL;博士

  • 创建VSIX Package
  • 添加Analyzer项目项
  • 按下F5.
  • 实验实例启动,但分析器没有加载,无法进行调试。
  • 手动添加分析器可以工作。
  • 问题:如何自动调理分析仪?

问题描述:

有很多教程(甚至官方文档)都是从项目模板Analyzer with Code Fix (NuGet + VSIX)开始的。但是,在最新版本的.NET编译器平台中,我没有这样的项目模板。

所以,我创建了一个VSIX project。然后,我创建了一个Analyzer项目项。注意,我没有CodeFix项,因为我不需要修复代码,只显示一些警告。

这就是我所拥有的(我做了一些改变):

代码语言:javascript
复制
[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."));
        }

    }
}

就这样。该项目仅包含此文件、.vsixmanifestpackages.config

当我以调试模式(使用F5)运行该项目时,将加载实验实例,并且我可以在Extensions and Updates中看到该包。但是,没有命中断点(没有加载符号),分析器在分析器列表中(在解决方案资源管理器中)不可见。

然后我做以下几件事:

  • 将输出文件夹中的.vsix文件重命名为.vsix.zip并打开它
  • 从zip中提取程序集DLL。
  • 右击解决方案资源管理器中的分析器
  • 手动浏览/添加分析器的程序集DLL

然后,突然,符号被加载,调试器在断点上停止。

在实验实例中有什么方法可以自动加载分析器吗?我是不是漏掉了什么配置?

EN

Stack Overflow用户

回答已采纳

发布于 2016-05-16 08:53:54

VSIX模板可从视听演播室中获得。

我怀疑您的v6项目缺少的是vsix包清单中正确的组件列表。您需要在资产列表中同时定义MefComponentAnalyzer

票数 3
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37248644

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档