Erstellung eines Extension-Packages / -Models

Es gibt bereits eine gute Beschreibung im Wiki, wie man ein Model in einem neuen Package erstellten kann. Ich möchte das trotzdem kurz thematisieren, weil dort ein paar Infos fehlen meiner Meinung nach. Und zwar zu den Referenzen der Packages und vor allem den notwendigen Aktionen in Richtung Versionskontrolle.

Um trotzdem ein vollständiges Bild zu vermitteln, nenne ich dennoch alle notwendigen Schritte, selbst wenn diese schon im Wiki enthalten sind. Ich versuche aber, mich kurz zu fassen.

Plane!

Man sollte zunächst eine konkrete Idee haben, wofür das neue Package gut sein soll. Das sollte Einfluss auf die Namensgebung haben. Die Referenzen vom Model und auf das Package müssen einem auch klar sein. Im Beispiel, das ich aufzeige, handelt es sich um ein Extension-Model zur Application Suite (das sich natürlich in einem Extension-Package befindet). Dieses soll dann später Artefakte enthalten, die Objekte der Suite erweitern (anstatt und ohne diese zu overlayern / ändern / modifizieren / …).

Wie es geht – Schritt für Schritt

Man muss Visual Studio für die Erstellung verwenden. Öffne Dynamics AX > Model Management > Create model…, um den entsprechenden Dialog zu öffnen.

Extension Package Model Management Create Model

Im zweiten Schritt musst du unter anderem den Namen, den Layer und weitere Informationen für das neue Model angeben. Der Display name kommt im Application Explorer zur Anwendung.

Extension Package Model Management Create Model Add Parameters

Im nächsten Schritt wählt man aus, ob man ein neues Package erstellen (das machen wir hier) oder ein schon vorhandenes verwenden möchte. Letzteres muss man auswählen, wenn man overlayern muss. In diesem Fall erstellt man ein Custom Model im Package, in dem sich die zu modifizierenden Objekte befinden. Natürlich wäre das mittlerweile der antiquierte Weg für Customizing in AX 😉

Extension Package Model Management Create Model Select Package

Hier wird es jetzt ein wenig interessanter, weil man die zu referenzierenden Packages auswählen muss (Select referenced packages). Man kann nur Objekte verwenden (im Code, zum Beispiel), die man über diese Referenzen bekannt gemacht hat. Die Referenzen werden nicht vererbt, man darf also nicht erwarten, dass Objekte aus Platform verfügbar sind, wenn man nur Suite referenziert – man muss alle Referenzen explizit einrichten. Im Fall meines Beispiels – des Extension-Models zur Application Suite – würde ich immer empfehlen, die gleichen Referenzen zu verwenden, die die Suite selbst benutzt. Plus der Suite als Referenz, natürlich. Man kann bestehende Referenzen über Dynamics AX > Model Management > Update model parameters… einsehen. Ich kopiere diese einfach manuell. Ich halte aber auch für denkbar, dass man ausschließlich Application Suite referenzieren möchte. Zum Beispiel, wenn man lediglich dort enthaltene Forms mit Extensions versehen möchte.

Extension Package Model Management Create Model Select ReferencedPackages

Im letzten Schritt dieses Dialogs wird man in der Regel das Häkchen für Create new project beibehalten wollen, weil man schätzungsweise ja das Model benötigt, um es mit Objekten zu befüllen – dafür benötigt man ein Projekt. Wenn man außerdem hauptsächlich mit diesem Model arbeiten wird, dann sollte man auch noch Make this my default model for new projects selektiert lassen. Ich habe auf den ersten Blick die entsprechende Einstellung nicht in den Optionen von VS finden können, aber sie befindet sich auf jeden Fall in der AX-spezifischen Konfigurationsdatei für Visual Studio, C:\Users\Administrator\Documents\Visual Studio 2015\Settings\DynamicsDevConfig.xml:

<DefaultModelForNewProjects>axility Application Suite Extension</DefaultModelForNewProjects>

Nachdem man den Dialog dann finalisiert hat, erscheint der für die Anlage eines neuen Projekts. Gib ihm einen aussagekräftigen Namen. Ich versioniere auch die Entwicklungsprojekte und selektiere deshalb direkt Add to source control. Man kann das natürlich auch später nachholen.

Extension Package Model Management Create Model New Project

Wo ich gerade beim Thema Versionskontrolle bin. Du willst ganz sicher die Metadaten des neuen Package und Model einchecken, damit alle anderen diese in ihren Umgebungen erhalten (und automatische Builds sauber laufen usw.). Einiges funktioniert implizit, wenn man ein im Model befindliches Objekt der Versionskontrolle hinzufügt, weil hier die Verzeichnisstruktur führend ist. Man muss aber eine XML-Datei manuell einchecken: Die Deskriptor-Datei, die unter anderem die eingerichteten Referenzen enthält. Man macht dafür einfach einen Rechtsklick im Source Control Explorer und wählt Add Items to Folder… aus, um dann die entsprechende Datei auszuwählen. Sie befindet sich im Unterverzeichnis Descriptor und ist nach dem Schema NameOfYourModel.xml benannt. Befinden sich mehrere Models in einem Package, so sind in dem Ordner auch mehrere XML-Dateien. Nach Bestätigung des Dialogs hat man einen Pending Add für die Datei.

Extension Package Model Management Add Descriptor To Source Control

Als nächstes wird man vermutlich die Objekte erstellen, wegen denen man das Model angelegt hat – ich verwende eine leere Klasse als Anschauungsobjekt.

Extension Package Add Class

Schließlich kann man alles über den Team Explorer einchecken.

Extension Package Check In Pending Changes

Schreibe einen Kommentar