Как получить имя сборки из объекта MethodDeclarationSyntax

#c# #roslyn

#c# #roslyn

Вопрос:

Используя Roslyn, я получаю общедоступные методы, подобные этому:

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

как возможно получить имя сборки из объекта MethodDeclarationSyntax?

Комментарии:

1. Просто любопытно, но зачем вам нужна сборка, в которую это войдет вместо имени файла?

2. Привет @Jlalonde Мне нужно только сохранить имя сборки, и я не буду использовать ни для чего конкретного roslyn.

Ответ №1:

Поскольку у вас уже есть семантическая модель, вы можете запросить у нее символы. Символы содержат ссылки на информацию о сборке, в которой они содержатся:

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