Есть способ получить список классов и методов, прочитав IL Code. Решение, о котором я говорю, может быть немного длинным, но оно будет работать.
IL — это не что иное, как .exe или .dll. Сначала попробуйте преобразовать его в C# или VB с помощью ILSpy . Загрузите этот инструмент и откройте в нем свою DLL. Этот инструмент может преобразовать ваш IL-код в C# или VB.
После преобразования сохраните преобразованный код в текстовый файл.
Затем прочитайте текстовый файл и найдите в нем классы и методы.
Чтобы прочитать имена методов:
MatchCollection mc = Regex.Matches(str, @"(\s)([A-Z]+[a-z]+[A-Z]*)+\(");
Чтобы прочитать имена классов:
Переберите файл построчно и проверьте, имеет ли строка имя "Class" . если у него есть имя, затем разделите значения и сохраните значение/текст, который следует за именем "Class", которое есть не что иное, как ClassName.
Полный код:
static void Main(string[] args)
{
string line;
List<string> classLst = new List<string>();
List<string> methodLst = new List<string>();
System.IO.StreamReader file = new System.IO.StreamReader(@"C:\Users\******\Desktop\TreeView.txt");
string str = File.ReadAllText(@"C:\Users\*******\Desktop\TreeView.txt");
while ((line = file.ReadLine()) != null)
{
if (line.Contains("class")&&!line.Contains("///"))
{
// for finding class names
int si = line.IndexOf("class");
string followstring = line.Substring(si);
if (!string.IsNullOrEmpty(followstring))
{
string[] spilts = followstring.Split(' ');
if(spilts.Length>1)
{
classLst.Add(spilts[1].ToString());
}
}
}
}
MatchCollection mc = Regex.Matches(str, @"(\s)([A-Z]+[a-z]+[A-Z]*)+\(");
foreach (Match m in mc)
{
methodLst.Add(m.ToString().Substring(1, m.ToString().Length - 2));
//Console.WriteLine(m.ToString().Substring(1, m.ToString().Length - 2));
}
file.Close();
Console.WriteLine("******** classes ***********");
foreach (var item in classLst)
{
Console.WriteLine(item);
}
Console.WriteLine("******** end of classes ***********");
Console.WriteLine("******** methods ***********");
foreach (var item in methodLst)
{
Console.WriteLine(item);
}
Console.WriteLine("******** end of methods ***********");
Console.ReadKey();
}
Здесь я сохраняю имена классов и имена методов в списке. позже вы можете сохранить их в XML или JSON, как описано выше.
Пингуйте нас, если у вас возникнут какие-либо проблемы.
person
Sai Bhasker Raju
schedule
27.10.2016
ildasm
не предназначен для программного чтения ничем, кромеilasm
. На этом пути лежит безумие. - person Jeroen Mostert   schedule 26.10.2016