Посилання на формат вихідного елемента керування YAML рішення

У цій статті наведено посилання на формат вихідного елемента керування на основі YAML, який використовується, коли ви:

  • За допомогою вбудованої інтеграції Dataverse Git у Power Apps.
  • Видобування рішень за допомогою pac solution clone або pac solution sync.
  • Вручну запустіть SolutionPackager із папкою, яка містить файли маніфесту YAML.

Формат YAML відрізняється від класичного макета XML. Розуміння структури важливе, коли потрібно вручну упакувати папку YAML у .zip файл, який dataverse може імпортувати.

Important

Підтримка формату вихідного елемента керування YAML у CLI pac потребує Microsoft. PowerApps.CLI версії 2.4.1 або пізнішої. Завантажте найновішу версію з NuGet або оновіть її за допомогою pac install latest. SolutionPackager.exe, який постачається з пакетом NuGet, підтримує формат YAML з тієї ж версії.

Огляд структури папок

Корінь сховища у форматі YAML містить такі каталоги верхнього рівня:

<repositoryRoot>/
├── solutions/
│   └── <SolutionUniqueName>/       (one subfolder per solution)
│       ├── solution.yml
│       ├── solutioncomponents.yml
│       ├── rootcomponents.yml
│       └── missingdependencies.yml
├── publishers/
│   └── <PublisherUniqueName>/      (one subfolder per publisher)
│       └── publisher.yml
├── entities/                        (entity components, if any)
│   └── <entity_schema_name>/
│       ├── attributes/
│       ├── formxml/
│       ├── savedqueries/
│       └── ...
├── workflows/                       (classic workflow definitions, if any)
├── modernflows/                     (Power Automate cloud flows, if any)
├── canvasapps/                      (canvas app .msapp files, if any)
│   └── <canvas_app_schema_name>/
│       └── <name>.msapp
├── environmentvariabledefinitions/  (environment variable definitions, if any)
├── connectors/                      (custom connectors, if any)
└── [other component folders]/

Потрібні solutions/ каталоги та publishers/ каталоги. Усі папки компонентів у кореневій папці необов'язкові та залежать від того, що містить рішення.

Important

Усі файли маніфесту YAML (solution.ymlpublisher.ymlтощо) мають бути розміщені у відповідних підкаталогах (solutions/<name>/, publishers/<name>/). Розміщення їх у кореневому сховищі запобігає виявленню формату та призводить до повернення засобу SolutionPackager до формату XML, що призводить до помилки, яка вводить в оману щодо відсутньої.Customizations.xml Додаткові відомості: Виправлення неполадок засобу SolutionPackager

Форматування автовиявлення

Програма SolutionPackager (і pac solution pack) автоматично визначає формат таким им станом:

Стан Виявлено формат Поведінка
solutions/*/solution.yml знайдено — одне рішення YAML (ЯМЛ) Ім'я рішення, отримане з імені вкладеної папки
solutions/*/solution.yml знайдено – кілька рішень YAML (ЯМЛ) /SolutionName аргумент, необхідний для визначення рішення для пакування
Немає solutions/ підкаталогу XML (застаріла версія) Other\Solution.xml Очікує таOther\Customizations.xml

Файли маніфесту

solution.yml

Знаходиться за адресою solutions/<SolutionUniqueName>/solution.yml. Містить метадані рішення верхнього рівня – еквівалент solution.xml YAML у форматі XML.

Ключові поля включають унікальне ім'я рішення, версію, зрозуміле ім'я, опис і посилання на видавця.

solutioncomponents.yml

Знаходиться за адресою solutions/<SolutionUniqueName>/solutioncomponents.yml. Список відносних шляхів до всіх файлів компонентів, включених до цього рішення. SolutionPackager читає цей файл під час пакета, щоб знайти джерела компонентів.

Приклад витягу:

- Path: entities/account
- Path: entities/contact
- Path: canvasapps/myapp_<guid>
- Path: publishers/MyPublisher

rootcomponents.yml

Знаходиться за адресою solutions/<SolutionUniqueName>/rootcomponents.yml. Список компонентів кореневого рівня (зазвичай таблиць та інших об'єктів верхнього рівня), які належать до цього рішення.

Нотатка

Якщо компонент оголошений, але його вихідні файли відсутні в папці (наприклад, файл програми rootcomponents.yml полотна в .msapp розділі canvasapps/<name>/), SolutionPackager виділяє попередження та не опускає цей компонент із упакованого .zip. Операцію з пакетом успішно завершено з кодом виходу 0.

Успішний пакет не гарантує успішного імпорту. Якщо solutioncomponents.yml не вказано обов'язкові шляхи залежності, наприклад батьківські папки сутностей або визначення зв'язків у розділі entityrelationships/ , пакети рішень без помилок, але не вдається імпортувати з повідомленням на кшталт "Атрибути відсутні пов'язані визначення зв'язків". Завжди переконайтеся solutioncomponents.yml , що включає всі залежні сутності та зв'язки, а не тільки ті, що належать рішення.

missingdependencies.yml

Знаходиться за адресою solutions/<SolutionUniqueName>/missingdependencies.yml. Записує будь-які залежності рішення, які не були присутні під час останнього експорту рішення. Використовується для ознайомлення та перевірки повноти імпорту.

publisher.yml

Знаходиться за адресою publishers/<PublisherUniqueName>/publisher.yml. Містить визначення видавця – унікальне ім'я, коротке ім'я, префікс настроювання та префікс значення параметра.

Мінімальна необхідна структура:

Publisher:
  UniqueName: mypublisher
  LocalizedNames:
    LocalizedName:
      '@description': My Publisher
      '@languagecode': '1033'
  Descriptions:
  EMailAddress:
    '@xsi:nil': 'true'
    '@xmlns:xsi': http://www.w3.org/2001/XMLSchema-instance
  SupportingWebsiteUrl:
    '@xsi:nil': 'true'
    '@xmlns:xsi': http://www.w3.org/2001/XMLSchema-instance
  CustomizationPrefix: myp
  CustomizationOptionValuePrefix: '12345'
  Addresses:

Підтримка типів компонентів

У таблиці нижче наведено спосіб обробки кожного типу компонента у форматі YAML.

Тип компонентів У форматі YAML Примітки
Сутності (таблиці), атрибути, форми, подання ✓ ФАЙЛИ YAML Зберігаються як окремі файли YAML на підкомпонент
Робочі цикли (класичні) ✓ ФАЙЛИ YAML Під workflows/
Сучасні потоки (Power Automate потоки хмари) ✓ – лише формат YAML У розділі modernflows/; не підтримується у форматі XML
Компоновані програми ✓ – лише формат YAML .msapp binary under canvasapps/<name>/; not supported in XML format
Визначення змінних середовища ✓ XML-файли Окремі .xml файли в розділі environmentvariabledefinitions/
Значення змінних середовища ✓ JSON-файл Зберігається як environment_variable_values.json
Настроювані з’єднувачі Під connectors/
Складання компонентів plug-in Повне ім'я типу, повторно зіставлене за замовчуванням (/remapPluginTypeNames)
Веб-ресурси Під webresources/
Ролі безпеки Зберігається як XML внутрішньо; відфільтровано за рішенням
Набори параметрів (глобальні) Зберігається як XML; відфільтровано за рішенням
Приладні дошки Зберігається як XML; відфільтровано за рішенням
Карти сайтів Зберігається як XML; відфільтровано за рішенням
Настроювання стрічки Зберігається як XML; відфільтровано за рішенням
Зв'язки сутностей Під entityrelationships/

Нотатка

Компоненти, які зберігаються як XML внутрішньо, автоматично перетворюються між XML і YAML під час операцій пакування та розпакування. Ви можете створити їх як файли YAML; інструмент обробляє перетворення.

Репозиторії для кількох рішень

Один корінь сховища може містити кілька рішень. Усі рішення мають однакові папки компонентів; solutioncomponents.yml у кожному рішенні визначає, які шляхи компонентів належать до цього рішення.

Приклад структури з двома рішеннями:

<repositoryRoot>/
├── solutions/
│   ├── SolutionA/
│   │   ├── solution.yml
│   │   ├── solutioncomponents.yml    ← references entities/account, entities/contact
│   │   ├── rootcomponents.yml
│   │   └── missingdependencies.yml
│   └── SolutionB/
│       ├── solution.yml
│       ├── solutioncomponents.yml    ← references entities/lead, workflows/myflow
│       ├── rootcomponents.yml
│       └── missingdependencies.yml
├── publishers/
│   └── SharedPublisher/
│       └── publisher.yml
├── entities/
│   ├── account/
│   ├── contact/
│   └── lead/
└── workflows/
    └── myflow/

Пакування певного рішення з папки з кількома рішеннями

Використання SolutionPackager.exe:

SolutionPackager.exe /action:Pack /zipfile:SolutionA.zip /folder:C:\repos\myrepo /SolutionName:SolutionA

Використання pac solution pack (лише для папок з одним рішенням – для кількох рішень використовуйте SolutionPackager.exe безпосередньо з /SolutionName):

pac solution pack --zipfile SolutionA.zip --folder C:\repos\myrepo

Нотатка

Під час використання вбудованої інтеграції Dataverse Git з прив'язкою до середовища всі рішення в середовищі мають єдиний корінь сховища за допомогою багатовимірного макета. Під час використання зв'язування рішення кожне рішення можна прив'язати до окремої папки.

Робота з папками формату YAML

Пакування папки YAML у файл .zip

# Using pac CLI (single solution in folder)
pac solution pack --zipfile C:\output\MySolution.zip --folder C:\repos\myrepo

# Using SolutionPackager.exe directly (also works for multi-solution with /SolutionName)
SolutionPackager.exe /action:Pack /zipfile:C:\output\MySolution.zip /folder:C:\repos\myrepo

Отримати повну папку YAML із Dataverse

Рекомендований спосіб отримати повну пакувану папку YAML полягає в використанні pac solution clone:

pac solution clone --name MySolutionUniqueName --outputDirectory C:\repos\myrepo

Рішення буде видобуто у форматі YAML, включно з усіма вихідними файлами компонентів. Крім того, використовуйте вбудовану інтеграцію Git для здійснення Power Apps – затверджені файли мають формат YAML і повністю доступні для пакування.

Перевірка папки перед пакуванням

Переконайтеся, що папка solutions/<name>/ існує, і що всі шляхи, які виправте з фактичними файлами solutioncomponents.yml . Будь-які відсутні шляхи призводять до попереджень під час пакета, і ці компоненти не вказано.

Зв'язок із інтеграцією Dataverse Git

Формат елемента керування джерелом YAML – це канонічний формат, який використовується інтеграцією Dataverse Git. Коли виробники приймають рішення від Power Apps, файли, написані постачальнику Git, використовують цей формат. Розробники з кодом можуть працювати з тим самим сховищем за допомогою описаних тут інструментів CLI.

Відомості про підключення середовищ до Git див. в статті Налаштування інтеграції Dataverse Git.