排序和删除(未使用的)使用语句 Roslyn 脚本/代码?我正在寻找一些 .NET/Roslyn(编译器即服务)代码,它们可以在项目中运行并排序和删除未使用的 using 语句。我相信 Roslyn 可以做到这一点吗?谁能指出可以重写的代码?
最佳答案
这是 Visual Studio 中的一项功能,但在学术上我认为您会像这样从 SyntaxTree 中收集 using 语句:
var usings = syntaxTree.Root.DescendentNodes().Where(node is UsingDirectiveSyntax);
...并将其与符号表解析的 namespace 进行比较,如下所示:
private static IEnumerable<INamespaceSymbol> GetNamespaceSymbol(ISymbol symbol)
{
if (symbol != null && symbol.ContainingNamespace != null)
yield return symbol.ContainingNamespace;
}
var ns = semanticModel.SyntaxTree.Root.DescendentNodes().SelectMany(node =>
GetNamespaceSymbol(semanticModel.GetSemanticInfo(node).Symbol)).Distinct();
关于c# - 使用语句 Roslyn 脚本/代码排序和删除(未使用的)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9913994/