Не изменяя процесс сборки или включая исходные файлы, кто-нибудь может придумать способ сделать два куска кода, которые при компиляции генерируют одну и ту же сборку, но при этом выполняются по-разному? Я уже знаю, почему это должно быть невозможным, поэтому, пожалуйста, не пытайтесь объяснить. Определенно есть способы сделать это, прежде всего, путем поиска способов скрыть информацию в исходном коде, которая заканчивается где-то, кроме исполняемого.
Довольно скучный и необработанный пример, который может сделать это: создать кусок кода, который занимает много времени для анализа, но оптимизируется во время процесса компиляции (или просто добавляет столько пробелов, что дисковый ввод-вывод замедляет компиляцию ). Сделайте так, чтобы ваша программа генерировала как exe, так и dll в процессе сборки. Пусть программа ведет себя по-разному в зависимости от разницы между созданными временными метками на dll и exe. Это довольно неудачный пример. Интересно, может кто-нибудь придумать что-нибудь более умное.
Можно также как-то сгенерировать другой вывод для отладки, и это изменило бы, как работает код, но это тоже немного неубедительно.
Это, конечно, более впечатляюще, если ваш код, похоже, не проверяет себя или вывод. Если кто-то, глядя на ваш код, будет шокирован тем, что две версии ведут себя по-разному, это отличный ответ.