Manifest.json
Diese Datei ist die Hauptdatei eines jeden Framework Projektes beziehungsweise Paketes. Hier sind alle Komponenten und deren Abhängigkeiten dokumentiert.
Mögliche Komponenten sind:
Package
: Dieser Eintrag referenziert ein bestimmtes NuGet-Paket als Abhängigkeit über seinen Namen innugetId
. Wird beispielsweise ein TcHmiButton (ausBeckhoff.TwinCAT.HMI.Controls
) im eigenen Paket genutzt, so mussBeckhoff.TwinCAT.HMI.Framework
nicht zusätzlich referenziert werden, da dies bereits das Controls-Paket übernimmt.Function
: Dies registriert eine Funktion aus diesem Paket im System. Hierfür wird das Funktions-Verzeichnis (basePath
) angegeben. Der Name der Beschreibungsdatei der Funktion wird alsdescriptionFile
angegeben.Resource
: Hierüber können zwei Arten von Ressourcen eingebunden werden, JavaScript-Dateien und CSS-Dateien. Hierbei wird bei der Einbettung die Reihenfolge beachtet. Eine CSS-Ressource, welche in der Manifest-Datei zwischen zwei Controls steht, wird also auch genau zwischen den CSS-Dateien dieser beiden Controls eingebunden.
Bei CSS Dateien kann zusätzlich (ab Version 1.12.752.0) noch ein Theme-Name angegeben werden. In diesem Falle wird die Datei nur eingebunden, wenn ein Theme mit dem entsprechenden Namen aktiv ist, ähnlich wie das bei Control-CSS-Dateien möglich ist.Control
: Dies registriert ein Control aus diesem Paket im System. Hierfür wird das Control-Verzeichnis (basePath
) angegeben. Der Name der Beschreibungsdatei des ControlsDescription.json
sollte nicht verändert werden.
Weiterhin können Sie hier über den Eintrag toolboxCategory
festlegen, wo ein Control in der VisualStudio Toolbar erscheint.
Beckhoff.TwinCAT.HMI:200
wird in der KategorieSystem
hinterlegt.Beckhoff.TwinCAT.HMI:201
wird in der KategorieBeckhoff
hinterlegt.Beckhoff.TwinCAT.HMI:202
wird in der Kategorie3rd party
hinterlegt.Beckhoff.TwinCAT.HMI:203
wird in der KategorieLegacy (1.10)
hinterlegt.- Eigene Einträge können Sie über
provideMetadata
(auch für mehrere Sprachen in Visual Studio) erstellen. Siehe nachfolgendes Beispiel. - Ist keine Kategorie hier definiert, so wird der Name des Projektes selbst als Kategorie genutzt.
Beispiel
{
"apiVersion": 1,
"modules": [
{
"type": "Package",
"nugetId": "Beckhoff.TwinCAT.HMI.Framework"
},
{
"type": "Function",
"basePath": "myFunction/",
"descriptionFile": "myFunction.function.json"
},
{
"type": "Resource
",
"path": "customHelpers.js"
},
{
"type": "Control",
"basePath": "Control1/",
"descriptionFile": "Description.json",
"toolboxCategory": "MyIdentifier:200"
},
{
"type": "Resource
",
"path": "PackageStyle.css"
},
{
"type": "Resource
",
"path": "PackageBaseThemeStyle.css",
"theme": "Base",
},
{
"type": "Control",
"basePath": "Control2/",
"descriptionFile": "Description.json",
"toolboxCategory": "MyIdentifier:201"
}
],
"provideMetadata": {
"toolbox": {
"MyIdentifier": {
"200": "FrameworkPrj1",
"201": {
"default": "Bühnentechnik",
"de-DE": "Bühnentechnik",
"en-US": "Stagecraft",
"it-IT": "Scenotecnica",
"nl-NL": "Theatertechniek"
}
}
}
},
"$schema": ".hmiframework/Schema/Manifest.Schema.json"
}