Я работаю над проектом по очистке устаревшего кода и должен программно находить все ссылки, вызывающие определенные веб-методы SOAP в ссылках на службы .NET 4.5 (например, файлы Reference.cs), поэтому Я могу выводить на текстовые файлы или Excel (в основном, ссылки, перечисленные с функциями CodeLens). Я решил, что для этой задачи я бы использовал библиотеку Mono.Cecil.Список всех ссылок, вызывающих метод с использованием Mono.Cecil
У меня есть методы для указанных сборок и классов, работающих отлично, так как я могу распечатать список всех методов для просмотра. Но любые мысли о том, как я могу получить список ссылок для конкретного метода?
// assemblyName is the file path for the specific dll
public static void GetReferencesList(string assemblyName)
{
AssemblyDefinition assembly = AssemblyDefinition.ReadAssembly(assemblyName);
foreach (ModuleDefinition module in assembly.Modules)
{
foreach (TypeDefinition type in module.Types)
{
if (type.Name.ToLowerInvariant() == "classname")
{
foreach (MethodDefinition method in type.Methods)
{
if (method.Name.Substring(0, 4) != "get_" &&
method.Name.Substring(0, 4) != "set_" &&
method.Name != ".ctor" &&
method.Name != ".cctor" &&
!method.Name.Contains("Async"))
{
//Method name prints great here
Console.WriteLine(method.Name);
// Would like to collect the list of referencing calls here
// for later output to text files or Excel
}
}
}
}
}
}
}