Одним из приложений для этого может быть сосредоточение времени QA на вещах, которые действительно были изменены между выпусками, а также мониторинг изменений в целом.
MSVC в тандеме с форматом PE, естественно, делает это очень трудным.
Пока я нашел и нейтрализовал их. вещи:
- Временная метка и контрольная сумма PE
- Запись каталога цифровой подписи
- Временная метка раздела отладчика
- Подпись PDB, возраст и путь к файлу
- Временная метка ресурсов
- Все версии файлов/продуктов в ресурсе VS_VERSION_INFO
/> - Раздел цифровой подписи
С одной оговоркой.
Абсолютные пути для обеих сборок должны быть одинаковыми должны иметь одинаковую длину.
Код: Выделить всё
cl.exeОщущение, что путь к файлу с флагами компиляции используется как своего рода хеш, который превращает его в связанный двоичный файл или даже влияет на порядок размещения несвязанных фрагментов скомпилированного кода.
Итак, вот вопрос из трех частей (обобщенный как «что теперь?»):
- Должен ли я отказаться от всего проекта и пойти домой из-за того, что я пытаюсь сделать? нарушает законы физики и корпоративную политику MS?
- Предполагая, что я решаю проблему с абсолютным путем (на уровне политики или путем поиска магического флага компилятора), есть ли еще какие-то вещи, на которые мне следует обратить внимание? (такие вещи, как __TIME__ do, означают измененный код, поэтому я не возражаю против того, чтобы их не игнорировали)
- Есть ли способ заставить компилятор использовать относительные пути или обмануть его, заставив думать, что путь не тот, что есть?
Интересно, есть ли способ настроить виртуальную файловую систему для процесса и его дочерних элементов, чтобы несколько деревьев процессов одновременно видели _различные_директории "C:\build", частные только для них... Своего рода облегченная виртуализация...
ОБНОВЛЕНИЕ: недавно мы открыли исходный код этого инструмента на GitHub. См. раздел Сравнение в документации.
Подробнее здесь: https://stackoverflow.com/questions/118 ... er-windows
Мобильная версия