Поскольку у вас уже есть семантическая модель, вы можете запросить ее для символов. Символы имеют ссылки на информацию о сборке, в которой они содержатся:
foreach (MethodDeclarationSyntax method in methodDeclarations)
{
var symbol = semanticModel.GetEnclosingSymbol(method.SpanStart);
var assembly = symbol.ContainingAssembly;
var assemblyName = assembly.Identity.Name;
}
Вы можете взглянуть на DCU32INT , декомпилятор Delphi DCU. Он генерирует файл .int, который каким-то образом читается, но не компилируется, но если вы хотите определить только определенные типы, этого может быть достаточно.
Чтобы узнать, что находится в блоке с именем FooUnit , введите в своем редакторе следующее:
unit Test;
interface
uses FooUnit;
var
x: FooUnit.
Нажмите Ctrl + Пробел в конце, и в IDE появится список возможных значений завершения, который должен состоять в основном, если не исключительно, из имен типов.
Формат DCU недокументирован, последний раз я проверял. Тем не менее, я нашел инструмент, который может дать вам некоторую базовую информацию под названием DCUtoPAS . Он не очень хорошо оценен на сайте, но может по крайней мере извлечь типы для вас. Существует также DCU32INT , который также может помочь.
В противном случае вам, возможно, придется просто открыть файл с помощью шестнадцатеричного редактора и покопаться в поисках строк.