04 сентября 2020

Delphi 10.4.1. Обходим баг в "package AUTO libsuffix"

    Одним из ключевых улучшений в RAD Studio версии 10.4.1, заявленных в Release Notes RADStudio 10.4.1, является "Package AUTO libsuffix". Это директива компилятора, которая позволяет при компиляции пакета автоматически подставлять в имя bpl-файла номер релиза RAD Studio.
    Судя по Release Notes, данная возможность была добавлена еще в RAD Studio 10.4. Для ее использования в код пакета достаточно добавить директиву компилятора:
{$LIBSUFFIX AUTO}
    Итак, создаем в Delphi 10.4 новый пакет xyz.dpk. Компилируем его и получаем файл xyz.bpl. Теперь в код пакета добавляем указанную директиву, компилируем его и получаем... ошибку:
[Fatal Error] Can't load package xyz.bpl.Не удается найти указанный файл
Проделываем то же самое в Delphi 10.4.1 и получаем туже ошибку. Заявленный функционал не работает!

    Но не стоит паниковать. Баг найден, но его можно легко обойти. Заходим в настройки проекта и в комбике "Lib suffix" выбираем "$(Auto)".
Project options - Lib suffix
Сохраняем настройки, компилируем пакет и получаем файл желаемый xyz270.bpl!

    Что изменилось? В тексте xyz.dpk - ничего. А вот в xyz.dproj добавилась строка: "<DllSuffix>$(Auto)</DllSuffix>":
<PropertyGroup Condition="'$(Cfg_2_Win32)'!=''">
    <VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
    <VerInfo_Locale>1033</VerInfo_Locale>
    <DllSuffix>$(Auto)</DllSuffix>
</PropertyGroup>
P.S. Для 64-х разрядной версии пакета данной ошибки в Delphi 10.4.1 не наблюдается. Компилятор корректно создает xyz270.bpl при наличии директивы "{$LIBSUFFIX AUTO}" в коде пакета. Даже если в комбике "Lib suffix" в настройках проекта ничего не указать или указать "AUTO" вместо "$(Auto)".

2 комментария:

  1. абракадабра хоть, что-то новое в Delphi может сделать без бага?

    ОтветитьУдалить
  2. 10.4.1 была сосредоточена на качестве, надеюсь, что 10.4.2 будет сосредоточена на качестве ещё больше

    ОтветитьУдалить