Проверка содержимого скомпилированных сборок

Я надеюсь, что кто-то сможет указать мне в правильном направлении. Мы находимся в процессе преобразования некоторых полей в нашей базе данных из int в bigint. В терминах это означает, что нам нужно обновить соответствующие поля в нашей кодовой базе с int на long. Проблема в том, что наша кодовая база ОГРОМНА. У нас сотни проектов, и искать их вручную было бы утомительно. Итак, я хочу создать приложение, которое при наличии сборки может искать во всем коде определенную строку (в данном случае имя поля). Я использовал отражение для вызова методов и получения значений свойств и т. д., но могу ли я использовать его для поиска значения в фактическом коде скомпилированной сборки? Значение может быть чем угодно — свойством, константой, методом и т. д. Я также смотрел на ildasm, но, похоже, он не дает мне способа поиска определенного строкового значения. Есть предположения?


person Shane McGarry    schedule 12.06.2014    source источник
comment
Я бы предложил изучить Roslyn, который является компилятором Microsoft как сервис. Вы можете подключиться к его AST (абстрактному синтаксическому дереву), которое поможет вам проанализировать ваш код и найти свойства, константы, методы и т. д. Вы можете посмотреть его здесь: msdn.microsoft.com/en-us/vstudio/roslyn.aspx   -  person Yuval Itzchakov    schedule 12.06.2014
comment
Я думаю, это объясняет, почему он стал огромным :/ Это технический долг, чем дольше вы ждете, тем дороже он становится. Сегодня самое время начать рефакторинг.   -  person Hans Passant    schedule 12.06.2014


Ответы (2)


Есть несколько продуктов, которые могут сделать это за вас:

Отражатель Red Gate (http://www.red-gate.com/products/dotnet-development/reflector/), платный

JustDecompile компании Telerik (http://www.telerik.com/products/decompiler.aspx) , Бесплатно

dotPeek от JetBrains (http://www.jetbrains.com/decompiler/), бесплатно

В основном я использую Reflector по привычке, потому что 1.) Я заплатил за него некоторое время назад и 2.) Я использую его с тех пор, как он стал бесплатным, поэтому от привычки трудно избавиться. Он также может позволить вам экспортировать сборки непосредственно в исходные файлы, и вы можете манипулировать ими оттуда.

person dotnetnate    schedule 12.06.2014

Вы можете использовать Reflector для поиска внутри сборок.

http://www.red-gate.com/products/dotnet-development/reflector/

person Oscar    schedule 12.06.2014