Соответствие исходному коду ASP.NET к скомпилированному [закрытому] веб-приложению

Если Вы не хотите дубликаты, используйте Набор вместо List. Для преобразования List в Set, можно использовать следующий код:

// list is some List of Strings
Set s = new HashSet(list);

, Если действительно необходимый можно использовать ту же конструкцию для преобразования Set назад в List.

5
задан Bhargav Rao 1 July 2018 в 09:03
поделиться

4 ответа

Я проделал это в клиентских проектах несколько раз и использовал Reflector, как и другие комментаторы. Такое случается чаще, чем следует. Например, когда кто-то внезапно покидает команду разработчиков. В одном проекте мою команду подрядчиков вызвали после того, как покинула ВЕСЬ команда разработчиков, и мы должны были следовать этой процедуре на каждом отдельном фрагменте кода, работающем в производственной среде, чтобы быть уверенными в том, что на самом деле было у нас в руках.

Способ Я занимаюсь этим, беря КАЖДУЮ версию скомпилированного кода, которая доступна, в отдельную область файловой системы. Это включает версию, которая находится в системе контроля версий или не на рабочей станции разработчика. Это важно, потому что Reflector видит IL, а не фактический исходный источник, и вы хотите сравнить яблоки с яблоками.

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

ProjectXyzReconciliation
|-production
|-staging
|-test
|-qa
|-devworkstation
|-sourcecontrol
|-reconciled (this is what will eventually go back in source control)

Затем я использую WinMerge (но также хорошо использовал другие инструменты слияния / сравнения), чтобы сравнить каталоги и объединить их в «согласованную» папку. Я обычно заполняю это тем, что работает в производстве, для начала и сравниваю с ним все остальные версии.

Первый этап - это просто посмотреть, что отличает, и декомпиляция в файлы позволяет вам использовать такие инструменты, как WinMerge, чтобы получать отчеты о том, что на самом деле разные для принятия решений.

Иногда этот процесс приводит к одному или двум изменениям, которые легко отследить до ошибок в базе данных отслеживания ошибок или электронных писем и т. д. и могут быть приняты решения относительно того, следует ли его использовать или оставить для дальнейшей работы.

Когда каждое различие объяснено и либо объединено, либо отклонено для последующей переделки или удаления, вновь согласованный код используется в качестве новой основы для будущего развития и рефакторинга. При этом теряются все комментарии, которые были в коде, но когда вся эта процедура была необходима, потеря комментариев не была большой потерей, если честно.

В первый раз это может показаться пугающим, но члены моей команды, которые хорошо в этом разбирались, обнаружили, что в более поздних проектах они часто могут казаться героями, поскольку они способны, казалось бы, совершать невозможное, когда возникает неприятная ситуация, и поэтому стоит положить это в свой набор инструментов.

Когда каждое различие объяснено и либо объединено, либо отклонено для дальнейшей переработки или удаления, вновь согласованный код используется в качестве новой основы для будущей разработки и рефакторинга. При этом теряются все комментарии, которые были в коде, но когда вся эта процедура была необходима, потеря комментариев не была большой потерей, если честно.

В первый раз это может показаться пугающим, но члены моих команд, которые хорошо в этом разбирались, обнаружили, что в более поздних проектах они часто могут казаться героями из-за того, что они способны, казалось бы, совершать невозможное, когда возникает неприятная ситуация, и поэтому стоит положить это в свой набор инструментов.

Когда каждое различие объяснено и либо объединено, либо отклонено для дальнейшей переработки или удаления, вновь согласованный код используется в качестве новой основы для будущей разработки и рефакторинга. При этом теряются все комментарии, которые были в коде, но когда вся эта процедура была необходима, потеря комментариев не была большой потерей, если честно.

В первый раз это может показаться пугающим, но члены моих команд, которые хорошо в этом разбирались, обнаружили, что в более поздних проектах они часто могут казаться героями из-за того, что они способны, казалось бы, совершать невозможное, когда возникает неприятная ситуация, и поэтому стоит положить это в свой набор инструментов.

5
ответ дан 13 December 2019 в 19:33
поделиться

Если бы я был в вашей ситуации, я бы скомпилировал каждый из 4 отдельных исходных проектов по одному ... Затем запустите надстройку diff для .NET Reflector , чтобы проверить, есть ли у вас совпадение с производственной сборкой. Если нет, скомпилируйте следующий исходный проект и повторите попытку.

4
ответ дан 13 December 2019 в 19:33
поделиться

Если каталоги вашего проекта содержат артефакты сборки, такие как библиотеки DLL и EXE, вы можете проверить номера версий и сравнить их с производственными. Даже если вы не найдете точного совпадения, вы увидите, что может быть наиболее близким.

1
ответ дан 13 December 2019 в 19:33
поделиться

.NET Reflector - удобный инструмент для просмотра того, какой код используется на данном сервере.

1
ответ дан 13 December 2019 в 19:33
поделиться
Другие вопросы по тегам:

Похожие вопросы: