Skip to main content

解决库依赖关系

为了解决库依赖关系,需要从以下方面确定完整的依赖关系图:Libraries.json参考文献列表并写给Libraries.lock.json锁定文件。

首次创建库时会运行库解析。之后,库解析将由用户显式触发。设备项目首次创建后,库解析会自动运行一次,但之后不会再自动运行,即使打开项目也不会。因此,依赖关系图的任何更改都不会被忽略。

要解析库,您可以使用解析库上下文菜单中的命令Libraries.json文件。当引用尚未解析或其存储的解析不再与定义匹配时,将考虑引用。Libraries.json文件。

这解析所有库该命令将重建整个图。

解决流程

依赖关系图是递归构建的。对于每个引用的库,也会解析其自己的引用。通过这种方式,图表会逐渐扩展,直到记录所有依赖关系。

当通过版本模式引用库时,解析过程中会检查所有可用的库源,以确定最佳匹配版本。这些库源包括库缓存和所有已配置的库存储库。

优先解决事项:

引用规则的判定依据固定的排名顺序。第一个适用的规则生效。

  1. 通过相对路径进行引用

  2. 引用库的固定版本

  3. 参考版本模式:选择最新匹配的版本。

  4. 带有覆盖的占位符Libraries.json(placeholderOverrides部分)

  5. 由组件或扩展解析的占位符CODESYS 4

  6. 占位符具有来自设备描述的唯一分辨率

    设备描述中的路径:library-management\placeholder-libraries\

错误和冲突

如果在解析库时出现异议,则该过程会因错误而中止。在这种情况下,不会创建锁定文件

以下情况存在冲突:

  • 同一个库被解析为不同的固定版本。

  • 同一个命名空间可以解析不同的库。

  • 一个库同时通过固定版本和不匹配的版本模式被引用。

  • 不同的设备描述对同一个占位符的解析方式相互冲突。

    当占位符被覆盖时,不会出现这种情况。Libraries.json文件已唯一定义了占位符。 

当必需的库无法解析时,也会发出错误消息。如果可选库无法解析,则只会生成诊断消息。在这种情况下,该库将被跳过,解析过程继续进行。

决议之后

问题解决后,库文件将可供访问。系统会检查相对路径的库文件路径是否有效。如果路径指向源库项目,则该项目将作为可编辑项目加载到工作区中。所有剩余的库文件将从其源文件恢复到库缓存中(前提是它们尚未存在于库缓存中)。锁定文件中的路径随后将指向库缓存中该库文件的位置。