Bibliotheksabhängigkeiten auflösen
Bei der Auflösung der Bibliotheksabhängigkeiten wird aus der Referenzliste Libraries.json der vollständige Abhängigkeitsgraph ermittelt und in die Lock-Datei Libraries.lock.json geschrieben.
Beim Anlegen wird initial eine Bibliotheksauflösung ausgeführt. Anschließend wird diese ausdrücklich vom Benutzer ausgelöst. Nach einem initialen Anlegen eines Geräteprojekts läuft einmal die Bibliotheksauflösung von selbst, danach nie wieder von selbst, auch nicht beim Öffnen eines Projekts. So ändert sich der Abhängigkeitsgraph nie unbemerkt.
Sie lösen die Bibliotheken über das Kontextmenü der Datei Libraries.json mit dem Befehl Bibliotheken auflösen auf. Berücksichtigt werden Referenzen, die noch keine Auflösung besitzen oder deren gespeicherte Auflösung nicht mehr zur Definition in der Libraries.json passt.
Mit dem Befehl Alle Bibliotheken auflösen wird der gesamte Graph neu aufgebaut.
Ablauf der Auflösung
Der Abhängigkeitsgraph wird rekursiv aufgebaut. Für jede referenzierte Bibliothek werden auch deren eigene Referenzen aufgelöst. Auf diese Weise wird der Graph schrittweise erweitert, bis alle Abhängigkeiten erfasst sind.
Wird eine Bibliothek über ein Versionsmuster referenziert, werden bei der Auflösung alle verfügbaren Bibliotheksquellen untersucht, um die bestmöglich passende Version zu ermitteln. Zu den Quellen zählen der Bibliotheks-Cache sowie alle konfigurierten Bibliotheksrepositorys.
Priorität bei der Auflösung
Eine Referenz wird nach einer festen Rangfolge aufgelöst. Die erste zutreffende Regel gewinnt.
Referenz über einen relativen Pfad
Referenz mit fester Version der Bibliothek
Referenz mit Versionsmuster: die neueste passende Version wird gewählt
Platzhalter mit einer Überschreibung in der
Libraries.json(AbschnittplaceholderOverrides)Platzhalter, aufgelöst durch eine Komponente oder Extension von CODESYS 4
Platzhalter mit eindeutiger Auflösung aus den Gerätebeschreibungen
Pfad in der Gerätebeschreibung:
library-management\placeholder-libraries\
Fehler und Widersprüche
Tritt bei der Auflösung von Bibliotheken ein Widerspruch auf, wird der Vorgang mit einem Fehler abgebrochen. In diesem Fall wird keine Lock-Datei erzeugt.
Ein Widerspruch liegt in den folgenden Fällen vor:
Dieselbe Bibliothek wird auf unterschiedliche feste Versionen aufgelöst.
Für denselben Namensraum werden verschiedene Bibliotheken aufgelöst.
Eine Bibliothek wird gleichzeitig über eine feste Version und über ein nicht dazu passendes Versionsmuster referenziert.
Verschiedene Gerätebeschreibungen lösen denselben Platzhalter widersprüchlich auf.
Dieser Fall tritt nicht auf, wenn eine Platzhalterüberschreibung in der Datei
Libraries.jsonden Platzhalter bereits eindeutig festlegt.
Ein Fehler wird außerdem ausgegeben, wenn eine erforderliche Bibliothek nicht aufgelöst werden kann. Kann eine optionale Bibliothek nicht aufgelöst werden, wird lediglich eine Diagnosemeldung erzeugt. Die Bibliothek wird in diesem Fall übersprungen und die Auflösung fortgesetzt.
Nach der Auflösung
Nach der Auflösung werden die Bibliotheken für den Zugriff bereitgestellt. Eine Bibliothek mit relativem Pfad wird auf einen gültigen Pfad geprüft. Wenn der Pfad auf ein Quellbibliotheksprojekt zeigt, wird das Projekt als editierbares Projekt in den Workspace geladen. Alle übrigen Bibliotheken werden aus ihren Quellen in den Bibliotheks-Cache wiederhergestellt, sofern sie dort noch nicht vorhanden sind. Anschließend zeigt der Pfad in der Lock-Datei auf den Ort der Bibliothek im Bibliotheks-Cache.