如何从本地放置的DLL添加自定义roslyn分析器?

问题描述 投票:0回答:1

我创建了一个Roslyn Analyzer项目,该项目生成一个nuget包及其DLL。我想在独立代码分析项目中使用该DLL。我怎样才能做到这一点?例如,我有以下代码:

MSBuildLocator.RegisterDefaults();
var filePath = @"C:\Users\user\repos\ConsoleApp\ConsoleApp.sln";
var msbws = MSBuildWorkspace.Create();
var soln = await msbws.OpenSolutionAsync(filePath);
var errors = new List<Diagnostic>();
foreach (var proj in soln.Projects)
{
    var analyzer = //Here i want to load analyzer from DLL present locally.
    var compilation = await proj.GetCompilationAsync();
    var compWithAnalyzer = compilation.WithAnalyzers(analyzer.GetAnalyzersForAllLanguages());
    var res = compWithAnalyzer.GetAllDiagnosticsAsync().Result;
    errors.AddRange(res.Where(r => r.Severity == DiagnosticSeverity.Error).ToList());
}

我尝试了以下操作

var analyzer = new AnalyzerFileReference("Path to DLL", new AnalyzerAssemblyLoader());

但是这里AnalyzerAssemblyLoader显示错误,因为它无法达到其保护级别(类是内部的。)>

如果可以,请建议我。

我创建了一个Roslyn Analyzer项目,该项目生成一个nuget包及其DLL。我想在独立代码分析项目中使用该DLL。我怎样才能做到这一点?例如,我有以下...

msbuild roslyn code-analysis roslyn-code-analysis microsoft.codeanalysis
1个回答
0
投票

.WithAnalyzers()选项将允许您传递分析器的实例。如果您在本地引用DLL,则可以像创建任何其他对象一样创建分析器,并将其传递给编译。

© www.soinside.com 2019 - 2024. All rights reserved.