Dynamo 用のパッケージとしてパブリッシュするアセンブリを開発している場合は、必要なすべてのアセットをグループ化し、パッケージと互換性のあるフォルダ構造に配置するように、プロジェクトを設定できます。これにより、プロジェクトをパッケージとしてすばやくテストし、ユーザの操作をシミュレーションすることができます。
Visual Studio でパッケージをビルドするには、次の 2 つの方法があります。
xcopy または Python スクリプトを使用して必要なファイルをコピーするビルド後のイベントを、プロジェクト設定ダイアログで追加します。
.csproj
ファイルで「AfterBuild」ビルド ターゲットを使用して、ファイルおよびフォルダのコピー タスクを作成します。
「AfterBuild」は、ビルド マシンでは使用できない可能性のあるファイル コピーに依存しないため、このような操作に適した方法であり、このガイドではこの方法について説明しています。
ソース ファイルがパッケージ ファイルとは別のファイルになるように、リポジトリ内のフォルダ構造を設定します。CustomNodeModel ケース スタディで作業しているため、Visual Studio プロジェクトと関連するすべてのファイルを新しい src
フォルダに配置します。プロジェクトによって生成されるすべてのパッケージをこのフォルダに保存することになります。フォルダ構造は次のようになります。
プロジェクト ファイルを新しい
src
フォルダに移動します。
ソース ファイルは別のフォルダにあるため、Visual Studio で AfterBuild
ターゲットを CustomNodeModel.csproj
ファイルに追加します。これにより、必要なファイルが新しいパッケージ フォルダにコピーされます。CustomNodeModel.csproj
ファイルをテキスト エディタ(この例では Atom を使用しました)で開き、ビルド ターゲットを終了タグ </Project>
の前に配置します。この AfterBuild ターゲットは、.dll、.pbd、.xml、および .config ファイルをすべて新しい bin フォルダにコピーし、dyf フォルダと extra フォルダを作成します。
ターゲットが(他のプロジェクト ファイルではなく)
CustomNodeModel.csproj
ファイルに追加されていること、およびプロジェクトに既存のビルド後の設定がないことを確認する必要があります。
AfterBuild ターゲットを終了タグ
</Project>
の前に配置します。
<ItemGroup>
セクションでは、特定のファイル タイプを表す変数がいくつか定義されています。たとえば、変数 Dll
は、出力フォルダ内にある、拡張子が .dll
のすべてのファイルを表します。
Copy
タスクは、すべての .dll
ファイルをフォルダにコピーします。具体的にはビルド先のパッケージ フォルダにコピーします。
Dynamo パッケージには通常、Dynamo カスタム ノード用の dyf
フォルダ、およびイメージなどのその他のアセット用の extra
フォルダがあります。これらのフォルダを作成するには、MakeDir
タスクを使用する必要があります。このタスクは、フォルダが存在しない場合にそのフォルダを作成します。このフォルダにファイルを手動で追加できます。
プロジェクトをビルドすると、プロジェクト フォルダには、以前に作成された src
フォルダの横に packages
フォルダが作成されます。packages
フォルダ内には、パッケージに必要なものがすべて格納されているフォルダがあります。また、pkg.json
ファイルをパッケージ フォルダにコピーして、Dynamo でパッケージをロードできるようにする必要があります。
AfterBuild ターゲットが作成した新しいパッケージ フォルダ
プロジェクトの既存の src フォルダ
AfterBuild ターゲットによって作成された
dyf
およびextra
フォルダ
pkg.json
ファイルを手動でコピーします。
これで、Dynamo のパッケージ マネージャを使用してパッケージをパブリッシュしたり、Dynamo のパッケージ フォルダ <user>\AppData\Roaming\Dynamo\1.3\packages
に直接コピーできるようになりました。
パッケージは、Dynamo コミュニティでノードを保存し、共有できる便利な方法です。パッケージには、Dynamo ワークスペースで作成されたカスタム ノードから NodeModel 派生ノードまで、すべての情報を含めることができます。パッケージは、Package Manager を使用してパブリッシュおよびインストールします。ここで説明する内容に加えて、 のパッケージに関する一般的なガイドも参照してください。
Dynamo Package Manager は、Dynamo または Web ブラウザからアクセスできるソフトウェア レジストリ(npm と同様)です。Package Manager には、パッケージのインストール、パブリッシュ、更新、および表示が含まれます。npm と同様に、パッケージの異なるバージョンが維持されます。プロジェクトの依存関係を管理する場合にも役立ちます。
ブラウザでパッケージを検索し、統計情報を表示します:
Dynamo では、Package Manager にはパッケージのインストール、パブリッシュ、および更新が含まれます。
パッケージをオンラインで検索する:
Packages > Search for a Package...
インストールされたパッケージを表示/編集する:
Packages > Manage Packages...
新しいパッケージをパブリッシュする:
Packages > Publish New Package...
パッケージは、Dynamo 内の Package Manager からパブリッシュします。プロセスとしては、まずローカルにパブリッシュし、パッケージをテストしてから、オンラインでパブリッシュしてコミュニティと共有することが推奨されます。ここでは NodeModel ケース スタディを使用して、RectangularGrid ノードをパッケージとしてローカルにパブリッシュし、オンラインでパブリッシュする際に必要となる手順を紹介します。
Dynamo を起動して、Packages > Publish New Package...
を選択し、Publish a Package
ウィンドウを開きます。
Add file...
を選択して、パッケージに追加するファイルを参照します。NodeModel ケース スタディから、2 つの
.dll
ファイルを選択します。
Ok
を選択します。
パッケージの内容にファイルを追加したら、パッケージに名前を付け、説明とバージョンを記入します。Dynamo を使用してパッケージをパブリッシュすると、自動的に pkg.json
ファイルが作成されます。
パッケージをパブリッシュする準備が整いました。
名前、説明、バージョンなど必要な情報を入力します。
[ローカルにパブリッシュ]をクリックして Dynamo のパッケージ フォルダ:
AppData\Roaming\Dynamo\Dynamo Core\1.3\packages
を選択し、Core でノードを使用できるようにしてパブリッシュを実行します。パッケージが共有できる状態になるまでは、常にローカルにパブリッシュします。
パッケージをパブリッシュすると、ノードは Dynamo ライブラリのカテゴリ CustomNodeModel
の下で使用できるようになります。
先ほど Dynamo ライブラリで作成したパッケージ
パッケージをオンラインでパブリッシュする準備ができたら、Package Manager を開いて Publish
を選択し、続いて Publish Online
を選択します。
Dynamo がパッケージをどのようにフォーマットしたかを確認するには、「CustomNodeModel」の右側にある 3 つの垂直ドットをクリックし、[ルート フォルダを表示]を選択します。
Publish
を選択し、[Dynamo パッケージをパブリッシュ]ウィンドウでPublish Online
を選択します。パッケージを削除するには、
Delete
を選択します。
パッケージの更新プロセスは、パブリッシュと同様です。Package Manager を開いて、更新する必要のあるパッケージの Publish Version...
を選択し、上位バージョンを指定します。
Publish Version
を選択し、新しいファイルを使用してルート フォルダ内の既存のパッケージを更新します。次に、ローカルにパブリッシュするか、オンラインでパブリッシュするかを選択します。
Package Manager Web クライアントは、バージョン管理やダウンロード統計など、パッケージ データの検索および表示にのみ使用されます。
次のリンクから Package Manager Web クライアントにアクセスできます:
Dynamo 拡張機能は、通常の Dynamo ノード ライブラリと同様に、パッケージ マネージャに配置できます。インストールされたパッケージにビューの拡張機能が含まれている場合は、Dynamo をロードするとその拡張機能が実行時にロードされます。Dynamo コンソールで、拡張機能が正しくロードされていることを確認できます。
拡張パッケージの構造は、通常のパッケージと同じで次のようになっています。
既に拡張機能をビルドしたと仮定すると、(少なくとも) .NET アセンブリとマニフェスト ファイルがあります。アセンブリには、IViewExtension
または IExtension
を実装するクラスが含まれている必要があります。マニフェスト .XML ファイルによって、拡張機能を起動するために Dynamo でどのクラスがインスタンス化されるかが決まります。Package Manager が拡張機能を正しく見つけるために、マニフェスト ファイルはアセンブリの場所と名前に正確に対応している必要があります。
アセンブリ ファイルを bin
フォルダに、マニフェスト ファイルを extra
フォルダに配置します。追加のアセットをこのフォルダに配置することもできます。
マニフェスト .XML ファイルの例:
上記のようにサブフォルダを含むフォルダが作成されたら、パッケージ マネージャにプッシュ(アップロード)できます。現在、DynamoSandbox からパッケージをパブリッシュできないため、注意してください。つまり、Dynamo Revit を使用する必要があります。Dynamo Revit 内で [パッケージ] => [新しいパッケージをパブリッシュ]にナビゲートします。これにより、パッケージを関連付ける Autodesk Account にログインするよう求めるメッセージが表示されます。
ログインすると、パッケージをパブリッシュする通常のウィンドウが開くため、パッケージや拡張機能に関するすべての必須フィールドに入力します。非常に重要な追加の手順として、どのアセンブリ ファイルもノード ライブラリとしてマークされていないことを確認する必要があります。この確認を行うには、読み込んだファイル(上で作成したパッケージ フォルダ)を右クリックします。コンテキスト メニューが表示され、このオプションをオン(またはオフ)にできます。すべての拡張機能アセンブリをオフにする必要があります。
パブリッシュして公開する前に、常にローカルにパブリッシュして、すべてが正しく機能していることを確認する必要があります。この確認が完了したら、パブリッシュを選択して公開できます。
パッケージが正常にアップロードされたことを確認するには、パブリッシュの手順で指定した名前とキーワードを使用してパッケージを検索します。最後に注意する点として、同じ拡張機能を機能させる前に Dynamo を再起動する必要があります。通常、このような拡張機能では、Dynamo の起動時にパラメータの指定が必要です。