При разработке сборок для публикации в виде пакета для Dynamo можно настроить проект таким образом, чтобы сгруппировать все необходимые компоненты и поместить их в структуру папок, совместимую с пакетом. Это позволит быстро протестировать проект в виде пакета и смоделировать работу пользователя.
Существует два способа сборки пакета в Visual Studio.
Добавьте события после сборки в диалоговом окне «Параметры проекта», в котором для копирования необходимых файлов используются сценарии xcopy или Python.
Используйте целевой объект сборки AfterBuild в файле .csproj
для создания задач копирования файлов и каталогов.
Метод AfterBuild предпочтителен для этих типов операций (в том числе в данном руководстве), так как он не зависит от копирования файлов, которые могут быть недоступны на компьютере сборки.
Настройте структуру папок в репозитории так, чтобы исходные файлы были отделены от файлов пакетов. При работе с примером CustomNodeModel поместите проект Visual Studio и все связанные файлы в новую папку src
. Все пакеты, созданные в проекте, будут сохранены в этой папке. Структура папок должна выглядеть следующим образом:
Переместите файлы проекта в новую папку
src
.
Теперь, когда исходные файлы находятся в отдельной папке, добавьте целевой объект AfterBuild
в файл CustomNodeModel.csproj
в Visual Studio. При этом необходимые файлы будут скопированы в новую папку пакета. Откройте файл CustomNodeModel.csproj
в текстовом редакторе (мы использовали Atom) и поместите цель сборки перед закрывающим тегом </Project>
. Целевой объект AfterBuild скопирует все файлы DLL, PBD, XML и CONFIG в новую папку bin и создаст папку dyf и дополнительные папки.
Необходимо убедиться, что целевой объект добавлен в файл
CustomNodeModel.csproj
(а не в другой файл проекта) и что в проекте нет параметров, заданных после сборки.
Поместите целевой объект AfterBuild перед закрывающим тегом
</Project>
.
В разделе <ItemGroup>
задается ряд переменных, представляющих определенные типы файлов. Например, переменная Dll
представляет все файлы в выходной папке с расширением .dll
.
Задача Copy
состоит в том, чтобы скопировать все файлы .dll
в каталог, а именно в папку пакета, в которую мы выполняем сборку.
Пакеты Dynamo обычно содержат папку dyf
и extra
для пользовательских узлов Dynamo и других компонентов, например изображений. Чтобы создать эти папки, необходимо использовать задачу MakeDir
. Если папка отсутствует, эта задача создаст ее. В эту папку можно добавить файлы вручную.
Теперь при построении проекта в папке проекта будет находится папка packages
рядом с ранее созданной папкой src
. В каталоге packages
находится папка, содержащая все необходимые для пакета компоненты. Также необходимо скопировать файл pkg.json
в папку пакета, чтобы сообщить Dynamo о необходимости загрузки пакета.
Новая папка пакетов, созданная целевым объектом AfterBuild.
Существующая папка src с проектом.
Папки
dyf
иextra
, созданные из целевого объекта AfterBuild.Скопируйте файл
pkg.json
вручную.
Теперь можно опубликовать пакет с помощью диспетчера пакетов Dynamo или скопировать его непосредственно в папку пакетов Dynamo: <user>\AppData\Roaming\Dynamo\1.3\packages
.