Grundprinzip der Bibliotheksverwaltung
In CODESYS 4 werden Bibliotheken nicht fest in die Applikation eingebettet, sondern referenziert.
Die Referenzen stammen aus verschiedenen Quellen: aus den Angaben des Entwicklers, aus Gerätebeschreibungen und aus dem Programmiersystem selbst. Viele dieser Referenzen sind unscharf. Sie nennen einen Platzhalter oder ein Versionsmuster und benennen damit noch keine konkrete Bibliothek.
Der Compiler benötigt jedoch für jede Bibliothek eine eindeutige Version. Deshalb werden in CODESYS 4 zwei Dinge getrennt: die gewünschten Referenzen und die daraus ermittelten, eindeutigen Bibliotheken.
Das Grundprinzip: Referenzliste und Lock-Datei
Die Bibliotheksverwaltung beruht auf zwei Dateien.
Die Datei Libraries.json ist die Referenzliste. In ihr tragen Sie die direkten Bibliotheksreferenzen ein. Die Datei beschreibt, welche Bibliotheken die Applikation benötigt. Sie wird von Hand oder über die Oberfläche gepflegt.
Aus der Referenzliste wird bei der Bibliotheksauflösung der vollständige Abhängigkeitsgraph ermittelt. Dabei wird jede Referenz rekursiv aufgelöst. Auch die Bibliotheken, die ihrerseits von referenzierten Bibliotheken benötigt werden, werden erfasst.
Das Ergebnis wird in die Lock-Datei Libraries.lock.json geschrieben.
Datei | Rolle | |
|---|---|---|
| Referenzliste mit den gewünschten Bibliotheken | Die Datei wird vom Entwickler verwaltet und gepflegt. |
| Lock-Datei mit dem aufgelösten Abhängigkeitsgraphen | Die Datei wird automatisch bei der Bibliotheksauflösung erstellt und aktualisiert. |
Nutzen für Versionsverwaltung und Reproduzierbarkeit
Die Lock-Datei ist auf Reproduzierbarkeit ausgelegt. Ihre Schlüssel werden sortiert, das Format bleibt stabil, und für kompilierte Bibliotheken wird eine SHA384-Prüfsumme hinterlegt.
Damit eignet sich die Lock-Datei gut für eine Versionsverwaltung wie Git oder SVN. Die Datei liegt im lesbaren JSON-Format vor. Änderungen am Bibliotheksstand sind so im Diff nachvollziehbar und können im Code-Review geprüft werden.
Wenn die Lock-Datei zusammen mit dem Projekt eingecheckt wird, erhält jeder Entwickler denselben Bibliotheksstand.
Tipp
Wer npm oder NuGet kennt, erkennt das Prinzip der Lock-Datei wieder. Für die Arbeit mit CODESYS 4 ist dieses Vorwissen nicht nötig.