Зачем это всё
До 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