首页 > 解决方案 > 如何从 MethodDeclarationSyntax 对象中获取程序集名称

问题描述

使用 Roslyn 我得到了这样的公共方法:

  var semanticModel = file.GetSemanticModelAsync().Result;
  var classParser = new ClassParser(semanticModel);
  var tree = file.GetSyntaxTreeAsync().Result;
  var methodDeclarations = tree.GetRoot().DescendantNodes()
                            .OfType<MethodDeclarationSyntax>()
                            .Where(method => method.Modifiers.Any(modifier => modifier.Kind() == SyntaxKind.PublicKeyword)).ToList();

如何从 MethodDeclarationSyntax 对象中获取程序集名称?

标签: c#roslyn

解决方案


由于您已经有了语义模型,您可以在其中查询符号。这些符号引用了有关它们所包含的程序集的信息:

foreach (MethodDeclarationSyntax method in methodDeclarations)
{
    var symbol = semanticModel.GetEnclosingSymbol(method.SpanStart);
    var assembly = symbol.ContainingAssembly;
    var assemblyName = assembly.Identity.Name;
}

推荐阅读