у нас было отставание разработчика после отправки кода VB asp.net 2.0 в производство, и теперь, когда нам нужно внести изменения, совершенно не ясно, какая (если таковая имеется) доступная версия исходного кода соответствует той, которая была развернута в производстве,
Эта проблема в некоторой степени похожа на предыдущий вопрос: Декомпилировать предварительно скомпилированный исходный код ASP.NET , за исключением того, что я хочу, если возможно, определить, точно ли развертывание в рабочей среде соответствует одной из версийИсходный код у нас есть.
Среди всего, что я пробовал:
- 1) Я пытался использовать различные инструменты для рекурсивного сравнения файлов по файлам с помощью файла .aspx в источнике ив производстве.Но процесс компиляции изменяет заголовки настолько, что они больше не соответствуют файлам до компиляции, и я не нашел инструмента, который мог бы отфильтровать это различие.И этого было бы недостаточно в любом случае.
- 2) Я попытался декомпилировать производственный код в VB, скомпилировать исходный код и затем декомпилировать его также в VB.Это оставляет мне два набора декомпилированного исходного кода VB для сравнения, как указано выше.Я использовал Redgate Reflector и надстройку File Disassembler Дениса Бауэра для создания исходного кода.Проблемы с этим подходом: декомпилятор вводил разные имена переменных для каждого кодового набора, поэтому все файлы были разными, во многих местах, где использовалась переменная.
- 3) Я использовал отражатель с надстройкой Diff Шона Хедермана.Это должно просто отличить исходный код в .dll для нас.Трудность заключалась в том, что во время компиляции большой проект распределяется по 5 или более DLL-файлам.Этим DLL-файлам даются случайные имена, и один и тот же файл кода может быть скомпилирован в один DLL-файл в одной компиляции и в другой DLL-файл в другой компиляции.Надстройка Diff, по-видимому, просто сравнивает одну .dll с другой .dll, так что это слишком большая область применения для этого инструмента.
- 4) Redgate имеет функцию «экспорта», которая будет экспортировать исходный код из .dll в каталог, полный исходных файлов.Думая, что это может дать результаты, отличные от подхода надстройки в пункте (2) выше, я тоже попробовал.На этот раз я экспортировал код в IL, так как думал, что он может отличаться меньше, чем исходный код VB.Фактически, IL, создаваемый компиляторами, радикально отличается, даже когда я думаю, что исходные файлы, вероятно, были одинаковыми (поскольку файлы, декомпилированные в C #, выглядели одинаково, за исключением разных имен переменных.)
- Я также исследовалмножество других инструментов для декомпиляции, но ни один из них не предлагал возможность декомпилировать такой большой проект для ряда файлов исходного кода, которые можно было бы сравнить.
- Я искал файлы / .dll, которые имели идентифицируемый номер версии, прежде чем пытаться что-либо из перечисленного выше, чтобы увидеть, может ли номер версии соответствовать производственному.Я еще не нашел один.
Есть ли у кого-нибудь идеи / инструменты / стратегии, которые могли бы решить эту проблему раз и навсегда?Большое спасибо!