Erstellen eines Pakets in Visual Studio

Wenn Sie Assemblys entwickeln, die als Paket für Dynamo publiziert werden sollen, kann das Projekt so konfiguriert werden, dass alle erforderlichen Objekte gruppiert und in einer paketkompatiblen Verzeichnisstruktur abgelegt werden. Dadurch kann das Projekt schnell als Paket getestet werden und die Benutzererfahrung simuliert werden.

So erstellen Sie Pakete direkt im Paketordner

Es gibt zwei Methoden zum Erstellen eines Pakets in Visual Studio:

  • Hinzufügen von Postbuildereignissen über das Dialogfeld Projekteinstellungen, die XCopy- oder Python-Skripts zum Kopieren der erforderlichen Dateien verwenden

  • Verwenden des Build-Ziels AfterBuild in der .csproj-Datei, um Aufgaben zum Kopieren von Dateien und Verzeichnissen zu erstellen

AfterBuild ist die bevorzugte Methode für diese Operationstypen (und die in diesem Handbuch beschriebenen), da sie nicht auf dem Kopieren von Dateien beruht, die möglicherweise nicht auf dem Build-Computer verfügbar sind.

Kopieren von Paketdateien mit der AfterBuild-Methode

Richten Sie die Verzeichnisstruktur im Repository so ein, dass die Quelldateien von den Paketdateien getrennt sind. Platzieren Sie das Visual Studio-Projekt und alle zugehörigen Dateien in einem neuen src-Ordner, und arbeiten Sie dabei mit der Fallstudie CustomNodeModel. Sie speichern alle vom Projekt generierten Pakete in diesem Ordner. Die Ordnerstruktur sollte nun wie folgt aussehen:

CustomNodeModel
> src
  > CustomNodeModel
  > CustomNodeModelFunction
  > packages
  > CustomNodeModel.sln
  1. Verschieben Sie die Projektdateien in den neuen src-Ordner.

Nachdem sich die Quelldateien in einem separaten Ordner befinden, fügen Sie der Datei CustomNodeModel.csproj in Visual Studio ein AfterBuild-Ziel hinzu. Dadurch sollten die erforderlichen Dateien in einen neuen Paketordner kopiert werden. Öffnen Sie die Datei CustomNodeModel.csproj in einem Texteditor (wir haben Atom verwendet), und platzieren Sie das Build-Ziel vor dem schließenden </Project>-Tag. Dieses AfterBuild-Ziel kopiert alle DLL-, PBD-, XML- und CONFIG-Dateien in einen neuen bin-Ordner und erstellt einen dyf-Ordner sowie zusätzliche Ordner.

  <Target Name="AfterBuild">
    <ItemGroup>
      <Dlls Include="$(OutDir)*.dll" />
      <Pdbs Include="$(OutDir)*.pdb" />
      <Xmls Include="$(OutDir)*.xml" />
      <Configs Include="$(OutDir)*.config" />
    </ItemGroup>
    <Copy SourceFiles="@(Dlls)" DestinationFolder="$(SolutionDir)..\packages\CustomNodeModel\bin\" />
    <Copy SourceFiles="@(Pdbs)" DestinationFolder="$(SolutionDir)..\packages\CustomNodeModel\bin\" />
    <Copy SourceFiles="@(Xmls)" DestinationFolder="$(SolutionDir)..\packages\CustomNodeModel\bin\" />
    <Copy SourceFiles="@(Configs)" DestinationFolder="$(SolutionDir)..\packages\CustomNodeModel\bin\" />
    <MakeDir Directories="$(SolutionDir)..\packages\CustomNodeModel\dyf" />
    <MakeDir Directories="$(SolutionDir)..\packages\CustomNodeModel\extra" />
  </Target>

Wir müssen sicherstellen, dass das Ziel der Datei CustomNodeModel.csproj hinzugefügt wurde (nicht einer anderen Projektdatei) und dass das Projekt keine vorhandenen Postbuild-Einstellungen aufweist.

  1. Platzieren Sie das AfterBuild-Ziel vor dem </Project>-End-Tag.

Im Abschnitt <ItemGroup> sind eine Reihe von Variablen definiert, die bestimmte Dateitypen darstellen. Die Variable Dll stellt beispielsweise alle Dateien im Ausgabeverzeichnis mit der Erweiterung .dll dar.

<ItemGroup>
  <Dlls Include="$(OutDir)*.dll" />
</ItemGroup>

Die Aufgabe Copy besteht darin, alle .dll-Dateien in ein Verzeichnis zu kopieren, insbesondere den Paketordner, in dem die Erstellung erfolgt.

<Copy SourceFiles="@(Dlls)" DestinationFolder="$(SolutionDir)..\packages\CustomNodeModel\bin\" />

Dynamo-Pakete verfügen in der Regel über einen dyf- und einen extra-Ordner für benutzerdefinierte Dynamo-Blöcke und andere Objekte, z. B. Bilder. Um diese Ordner zu erstellen, müssen wir eine MakeDir-Aufgabe verwenden. Diese Aufgabe erstellt einen Ordner, wenn er noch nicht vorhanden ist. Sie können diesem Ordner manuell Dateien hinzufügen.

<MakeDir Directories="$(SolutionDir)..\packages\CustomNodeModel\extra" />

Wenn Sie das Projekt erstellen, sollte der Projektordner jetzt einen packages-Ordner neben dem zuvor erstellten src-Ordner enthalten. Im packages-Verzeichnis befindet sich ein Ordner, der alle für das Paket erforderlichen Elemente enthält. Außerdem müssen wir die Datei pkg.json in den Paketordner kopieren, damit Dynamo erkennt, dass das Paket geladen werden soll.

  1. Der neue Paketordner, den das AfterBuild-Ziel erstellt hat.

  2. Der vorhandene src-Ordner mit dem Projekt.

  3. Die Ordner dyf und extra, die aus dem AfterBuild-Ziel erstellt wurden.

  4. Kopieren Sie die Datei pkg.json manuell.

Jetzt können Sie das Paket mithilfe des Paket-Managers von Dynamo publizieren oder es direkt in das Paketverzeichnis von Dynamo kopieren: <user>\AppData\Roaming\Dynamo\1.3\packages.

Last updated