В новом приложении VCL Компиляция и Операция Build создает один и тот же двоичный файл и файл карты (с небольшими различиями в конце файла .exe, даже если "включает информацию о версии в проект опция отключена - уже обсуждено). Файл карты - это один и тот же байт. Но когда я добавляю любой сторонний компонент, двоичный файл и файл карты (!), Созданные в Build и Compile, значительно отличаются!
Проверено на двух версиях Delphi:
- Версия 7.0 (сборка 8.1)
- CodeGear ™ RAD Studio 2007 версии 11.0.2902.10471 (+ обновление за декабрь 2007 г.)
Шаг для воспроизведения:
- Создание нового приложения VCL. Возможно добавить любой родной компонент Delphi (я пробую все компоненты из вкладки Standart, Additional, Win32 и System).
- Включите файл «Подробная карта» на вкладке «Линкер» параметров проекта.
- Сборка проекта .
- Переименуйте выходные файлы .exe и .map (например: project1.exe в project1b.exe и project1.map в project1b.map).
- Скомпилировать проект .
- Переименуйте выходные файлы .exe и .map (например: project1.exe в project1c.exe и project1.map в project1c.map).
- Сравните файлы из шагов 4 и 6. (Я использую WinMerge
2.12.4.0).
У нас есть немного разные файлы .exe и полностью идентичные файлы .map. Затем, если мы повторим все шаги снова, но используем в проекте сторонний компонент (я пробую ODAC, DOA, DevExpress и selfmade), мы получим больше разных .exe и разных файлов .map.
Почему? Есть предложения?
UPDATE
Немного информации о том, как я нашел это и почему это меня интересует:
Проект построен из простого скрипта с MSBuild. Когда в проект был добавлен перевод через ITE (dll с ресурсами), я обнаружил, что когда проект был Build (из скрипта или из IDE) - переведенная версия работает неправильно - какой-то текст на кнопке, метки и т. Д. Был получен из неправильного места (буквально из другого кнопка, метки). Когда проект скомпилирован из IDE - все ок. Поэтому я начинаю сравнивать результаты сборки и компиляции ...