我创建了一个包含组件注册的设计包(组件本身在运行时)和一些IDE菜单项。
如果我点击项目管理器的上下文菜单中的“安装”菜单项 - 包将被加载并正常工作(总是)。
如果我关闭IDE并重新启动它 - 可能会加载包 或 。随机看似。但它通常不会加载,而不是加载。
如果我去组件/安装包 - 我在列表中看到我的包,复选框被选中,“组件”按钮显示我的包中的组件,但包的可执行文件本身甚至没有在IDE中加载! (我已通过Process Explorer验证了这一点)。重新安装(删除包 - >确定 - >组件/安装包 - >添加 - >确定)没有帮助。但是从项目管理器中的项目的上下文菜单卸载/安装 - 总是有帮助的。
我已将OutputDebugString添加到包中每个模块的初始化部分。我发现初始化部分不会运行。
运行时包与设计时包在同一文件夹中。文件夹位于PATH环境变量中。我还尝试将包放在Delphi的Bin文件夹中。没有错误消息。没有奇怪/诊断的OutputDebugStrings。
有什么想法吗?
P.S。我在2台不同的机器上有这种行为。一个是Win7,另一个是WinXP SP 2.
P.P.S。我无法在Delphi 7上重现这种行为。相同的包,重新编译为D7加载。
答案 0 :(得分:9)
我发现新的Delphi具有延迟包加载的功能。这应该优化启动速度,当没有加载包时,不需要它们时。
这适用于组件包,但会破坏包(例如)修改IDE菜单的乐趣。
您可以通过从注册过程调用ForceDemandLoadState(dlDisable)来告诉IDE始终加载您的包。
P.S。为什么在发帖后几乎立即找到答案? :d