Si vous développez des assemblages destinés à être publiés sous forme de package pour Dynamo, le projet peut être configuré pour regrouper toutes les ressources nécessaires et les placer dans une structure de répertoire compatible avec le package. Cela permettra de tester rapidement le projet en tant que package et de simuler l’expérience d’un utilisateur.
Il existe deux méthodes pour générer un package dans Visual Studio :
ajouter des événements après la génération via la boîte de dialogue Paramètres du projet qui utilisent xcopy ou des scripts Python pour copier les fichiers nécessaires ;
utiliser la cible de génération « AfterBuild » dans le fichier .csproj
pour créer des tâches de copie de fichiers et de répertoires.
« AfterBuild » est la méthode préférée pour ces types d’opérations (et celle couverte par ce guide) car elle ne repose pas sur la copie de fichiers qui peuvent ne pas être disponibles sur la machine de génération.
Configurez la structure de répertoires dans le dépôt de sorte que les fichiers source soient séparés des fichiers de package. En travaillant avec l’étude de cas CustomNodeModel, placez le projet Visual Studio et tous les fichiers associés dans un nouveau dossier src
. C’est dans ce dossier que seront stockés tous les packages générés par le projet. La structure du dossier devrait maintenant être la suivante :
Déplacez les fichiers de projet vers le nouveau dossier
src
.
Maintenant que les fichiers source se trouvent dans un dossier distinct, ajoutez une cible AfterBuild
au fichier CustomNodeModel.csproj
dans Visual Studio. Cela devrait permettre de copier les fichiers nécessaires dans un nouveau dossier de package. Ouvrez le fichier CustomNodeModel.csproj
dans un éditeur de texte (nous avons utilisé Atom) et placez la cible de génération avant la balise de fermeture </Project>
. Cette cible AfterBuild copie tous les fichiers .dll, .pbd, .xml et .config dans un nouveau dossier bin et crée un fichier dyf et des dossiers supplémentaires.
Nous devons nous assurer que la cible a été ajoutée au fichier
CustomNodeModel.csproj
(et non à un autre fichier de projet) et que le projet ne possède aucun paramètre postérieur à la génération.
Placez la cible AfterBuild avant la balise de fin
</Project>
.
Dans la section <ItemGroup>
, un certain nombre de variables sont définies pour représenter des types de fichiers spécifiques. Par exemple, la variable Dll
représente tous les fichiers du répertoire de sortie dont l’extension est .dll
.
La tâche Copy
consiste à copier tous les fichiers .dll
dans un répertoire, en particulier le dossier de package vers lequel se fait la génération.
Les packages Dynamo possèdent généralement un dossier dyf
et extra
pour les nœuds personnalisés Dynamo et d’autres ressources telles que des images. Pour créer ces dossiers, nous devons utiliser une tâche MakeDir
. Cette tâche crée un dossier s’il n’existe pas. Vous pouvez ajouter des fichiers manuellement à ce dossier.
Si vous générez le projet, le dossier de projet doit désormais comporter un dossier packages
en plus du dossier src
créé précédemment. Le répertoire packages
contient un dossier contenant tous les éléments nécessaires au package. Vous devez également copier le fichier pkg.json
dans le dossier du package afin que Dynamo sache comment charger le package.
Le nouveau dossier de packages créé par la cible AfterBuild
Le dossier src existant avec le projet
Les dossiers
dyf
etextra
créés à partir de la cible AfterBuildCopiez manuellement le fichier
pkg.json
Vous pouvez désormais publier le package à l’aide du gestionnaire de package de Dynamo ou le copier directement dans le répertoire de package de Dynamo : <user>\AppData\Roaming\Dynamo\1.3\packages
.