Одна из самых страшных ошибок с пакетами времени разработки в Delphi, которая означает, что пакеты, которые регистрируют установку новых компонентов в вашу палитру, заключается в следующей ошибке:
Компонент TSЧто-то не может быть зарегистрировано пакетомSome_design.bpl, потому что он уже был зарегистрирован пакетом что-то, что-то design.bpl .?
Я уже много знаю:
Если у вас было две копииBPL и вы загрузили один, но другой пакет, который зависит от BPL, пытается загрузить другой, и он пытается загрузить вторую копию, вы получаете эту ошибку.
Иногда встречаются странныевещи о неявном импорте, которые требуют от вас исправить неявные предупреждения об импорте, очистить все ваши артефакты (dcu, dcp и т. д.) и повторить попытку, и это исчезнет.
Однако вЕсли НИКОГДА из вышеперечисленного не решает проблему, как вы решаете проблему?
Мне кажется, что на моем жестком диске есть только одна копия этого BPL, иАт указывает на него, и каким-то образом пакет выполняет «скрытную» фоновую загрузку пакета, прежде чем IDE сможет его увидеть, а затем сама IDE пытается загрузить пакет, который был загружен в память IDE, используявызов Win32 LoadLibrary и вторая загрузка, в которой IDE пытается загрузить этот пакет, вызывает сбой.
Я ищу:
A.Как выяснить, что не так, и как это исправить.
B.Способы избежать этого (защитные практики или инструменты для сканирования ваших пакетов или конфигурации Delphi IDE.)
C.Обходные.Например, я обнаружил, что запуск Delphi ide (bds.exe) с параметром -np
, затем загрузка моего проекта позже, а не во время начального запуска IDE, иногда решает проблему, задерживая открытие проекта / формы до более позднего времени., когда Delphi IDE кажется более стабильным.