README.md

Зачем это всё

До 2007 версий Delphi информация для сборки проекта сохранялась в *.cfg файлах. Для сборки проекта среда разработки Delphi напрямую использовала консольный компилятор dcc32 в своём составе, передав ему путь к файлу проекта *.dpr. Более новые версии Delphi сохраняют информацию для сборки проекта в файле *.dproj. Этот файл имеет xml-формат, совместимый с утилитой MSBuild. MSBuild — это консольная утилита от Microsoft, которая входит в состав .NET Framework. В некотором роде она является аналогом Make и предназначена для автоматической сборки проектов. Т.е. среда Delphi при сборке проекта передаёт проект не консольному компилятору dcc32 в своём составе, а утилите MSBuild. А утилита MSBuild после получения всей необходимой информации запускает всё тот же консольный компилятор dcc32 в составе Delphi. Т.е. фактически MSBuild просто передаёт параметры компилятору.

Этот проект - это попытка избавить Delphi 2000-х версий от посредника в виде MSBuild при компиляции проектов и тем самым полностью отказаться от использования модулей и пакетов, требующих наличия .NET Framework.

Что на данный момент известно и реализовано.

Delphi 2007

Всё посредничество начинается из библиотеки пакетов Borland с именем dotnetcoreide100.bpl, которая в свою очередь загружает модуль Borland.Studio.Interop.dll, который в свою очередь требует…требуе… Так “снежный ком” постепенно разрастается. dotnetcoreide100.bpl содержит набор методов интерфейса для подготовки проекта к взаимодействию с MSBuild. Большая часть этих методов преобразует параметры проекта, имена и пути к файлам, параметры компиляции из формата ANSISTRING в UNICODESTRING и передает их через интерфейс. Меньшая часть методов получает параметры через интерфейс в формате UNICODESTRING, преобразует их в ANSISTRING и передает среде разработки Delphi. Например, при создании проекта приложения с формой файлы проекта *.dpr, *.res, *.dfm, *.pas создаются без посредничества, а файл описания проекта *.bdsproj с посредничеством методов из dotnetcoreide100.bpl. Взаимодействие с MSBuild осуществляется через методы интерфейса Borland.Studio.Interop.dll

На данный момент состав почти всех методов интерфейса dotnetcoreide100.bpl, участвующих в процессе создания, чтения и компиляции проекта, известен. Назначение этих методов изучено еще не полность, но с достаточной степенью для реализации “библиотеки-заглушки”. При её подключении методы из dotnetcoreide100.BPL заменяются методами из этой библиотеки. После подключения ошибок при запуске Delphi, при создании и компиляции проекта не возникает, но фактически файл описания проекта *.bdsproj и компиляция не выполняется, т.к. это ещё не реализовано.

Исследование dotnetcoreide100.bpl выполнялось с использованием Interactive Delphi Reconstructor и отладчика OllyDBG.

Описание

Delphi без MSBuild - это модуль для работы RAD Studio 2007 без использования MSBuild и .NET Framework

Конвейеры
0 успешных
0 с ошибкой