Нотатка
Доступ до цієї сторінки потребує авторизації. Можна спробувати ввійти або змінити каталоги.
Доступ до цієї сторінки потребує авторизації. Можна спробувати змінити каталоги.
У цій статті наведено посилання на формат вихідного елемента керування на основі 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.