При разработке сборок для публикации в виде пакета для 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
.
Пакеты — это удобный способ хранения узлов и предоставления к ним доступа сообществу Dynamo. В пакет можно поместить любые элементы: от пользовательских узлов, созданных в рабочем пространстве Dynamo, до производных узлов NodeModel. Пакеты публикуются и устанавливаются с помощью диспетчера пакетов. Дополнительные сведения о пакетах см. в руководстве.
Диспетчер пакетов Dynamo — это программный реестр (похожий на npm), который можно открыть из Dynamo или в веб-браузере. Диспетчер пакетов обеспечивает установку, публикацию, обновление и просмотр пакетов. Как и npm, он поддерживает различные версии пакетов. Кроме того, он помогает управлять зависимостями проекта.
В браузере найдите пакеты и просмотрите статистику: https://dynamopackages.com/
В Dynamo диспетчер пакетов обеспечивает установку, публикацию и обновление пакетов.
Поиск пакетов в Интернете:
Packages > Search for a Package...
(Пакеты > Поиск пакета).Просмотр/редактирование установленных пакетов:
Packages > Manage Packages...
(Пакеты > Управлять пакетами).Публикация нового пакета:
Packages > Publish New Package...
(Пакеты > Опубликовать новый пакет).
Пакеты публикуются из диспетчера пакетов в Dynamo. Рекомендуется опубликовать пакет локально, протестировать его и затем опубликовать в Интернете, чтобы поделиться с сообществом. На основе примера NodeModel мы выполним все необходимые действия, чтобы опубликовать узел RectangularGrid в виде пакета локально, а затем в Интернете.
Запустите Dynamo и выберите Packages > Publish New Package...
(Пакеты > Опубликовать новый пакет), чтобы открыть окно Publish a Package
(Опубликовать пакет).
Выберите
Add file...
(Добавить файл) для поиска файлов, которые требуется добавить в пакет.Выберите два файла
.dll
из примера NodeModel.Нажмите
Ok
.
После добавления файлов в содержимое пакета присвойте пакету имя, описание и версию. При публикации пакета с помощью Dynamo автоматически создается файл pkg.json
.
Пакет готов к публикации.
Введите требуемые сведения: имя, описание и версию.
Чтобы опубликовать файл, нажмите кнопку «Опубликовать локально» и выберите папку пакета Dynamo:
AppData\Roaming\Dynamo\Dynamo Core\1.3\packages
. Узел будет доступен в Core. Всегда публикуйте пакет локально до тех пор, пока он не будет готов к публикации в открытом доступе.
После публикации пакета узлы будут доступны в библиотеке Dynamo в категории CustomNodeModel
.
Пакет, созданный в библиотеке Dynamo
Когда пакет будет готов к публикации в Интернете, откройте диспетчер пакетов и выберите Publish
(Опубликовать), а затем Publish Online
(Опубликовать в Интернете).
Чтобы узнать, как пакет был отформатирован в Dynamo, щелкните значок с тремя точками справа от CustomNodeModel и выберите Show Root Directory (Показать корневой каталог).
Выберите
Publish
(Опубликовать), а затемPublish Online
(Опубликовать в Интернете) в окне публикации пакета Dynamo.Чтобы удалить пакет, выберите
Delete
(Удалить).
Процесс обновления пакета аналогичен процессу публикации. Откройте диспетчер пакетов, выберите Publish Version...
(Публикация версии) для пакета, который необходимо обновить, и введите более позднюю версию.
Выберите
Publish Version
(Публикация версии), чтобы дополнить существующий пакет новыми файлами в корневом каталоге, а затем выберите, следует ли опубликовать пакет локально или в Интернете.
Веб-клиент диспетчера пакетов используется исключительно для поиска и просмотра данных пакета, таких как управление версиями и статистика скачивания.
Веб-клиент диспетчера пакетов можно найти на странице https://dynamopackages.com/
Расширения Dynamo можно развернуть в диспетчере пакетов так же, как и обычные библиотеки узлов Dynamo. Если установленный пакет содержит расширение вида, оно загружается во время выполнения при загрузке Dynamo. Откройте консоль Dynamo и убедитесь, что расширение загружено правильно.
Структура пакета расширения совпадает со структурой обычного пакета.
Если расширение уже собрано, то у вас уже должны быть сборка .NET и файл манифеста. Сборка должна содержать класс, который реализует IViewExtension
или IExtension
. XML-файл манифеста указывает Dynamo, какой класс следует создать для запуска расширения. Чтобы диспетчер пакетов нашел расширение, файл манифеста должен точно соответствовать расположению и имени сборки.
Все файлы сборки можно поместить в папку bin
, а файл манифеста — в папку extra
. В эту папку также можно поместить любые дополнительные компоненты.
Пример файла манифеста XML.
После создания папки, содержащей указанные выше подкаталоги, ее можно передать (выгрузить) в диспетчер пакетов. Следует помнить, что в настоящее время невозможно публиковать пакеты из Dynamo Sandbox. Это означает, что необходимо использовать Dynamo Revit. В Dynamo Revit перейдите в раздел Packages > Publish New Package (Пакеты > Опубликовать новый пакет). При этом пользователю будет предложено войти в свою учетную запись Autodesk, с которой требуется связать пакет.
На этом этапе должно быть открыто обычное окно публикации пакета, в котором необходимо заполнить все обязательные поля, относящиеся к пакету или расширению. Теперь очень важно убедиться в том, что ни один из файлов сборки не помечен как библиотека узлов. Для этого щелкните правой кнопкой мыши импортированные файлы (папка пакета, созданная выше). Откроется контекстное меню, в котором можно установить (или снять) флажок для этого параметра. Флажок должен быть снят для всех сборок расширений.
Перед публикацией в открытом доступе сначала опубликуйте пакет локально, чтобы убедиться в том, что все работает надлежащим образом. Проверив работу, нажмите кнопку публикации.
Чтобы убедиться в том, что пакет успешно загружен, попробуйте найти его по имени и ключевым словам, указанным на этапе публикации. Наконец, важно отметить, что для работы расширений потребуется перезагрузка Dynamo. Как правило, для этих расширений необходимы параметры, заданные при загрузке Dynamo.