我正在编写一个命令行程序,旨在打开一个解决方案并扫描文档中的错误和警告。我正在使用以下代码:
private static async void testDocument(Document document)
{
var syntaxTree = await document.GetSyntaxTreeAsync();
var semanticModel = await document.GetSemanticModelAsync();
var diagnostics = syntaxTree.GetDiagnostics().Concat(semanticModel.GetDiagnostics());
foreach (var diagnostic in diagnostics)
{
Console.WriteLine(diagnostic.ToString());
}
}
这很好用,但我还想输出从我自己编写的诊断中检测到的警告。它们位于使用“使用代码修复诊断”模板创建的另一个项目中。我怎样才能把这两件事放在一起?
最佳答案
当您创建工作区
时,调用overload需要一个 HostServices
,并传递 your own host包含 default assebmlies以及您自己的程序集:
MSBuildWorkspace.Create(
ImmutableDictionary<string, string>.Empty,
MefHostServices.Create(
MefHostServices.DefaultAssemblies.Add(Assembly.Load(...))
)
);
关于c# - 在命令行程序中使用自己的诊断,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25311463/