Препратка към формат за управление на източник на решение YAML

Тази статия е справка за базирания на YAML формат за управление на източник, използван, когато:

  • Фиксирайте решения с помощта на основна Dataverse Git integration в Power Apps.
  • Извлечете решения, като използвате pac solution clone или pac solution sync.
  • Изпълнете ръчно SolutionPackager срещу папка, която съдържа файловете на манифеста YAML.

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

Важно

Поддръжката на формата за управление на източник YAML в pac CLI изисква 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/ задължителни. Всички папки с компоненти в корена са незадължителни и зависят от това какво съдържа решението.

Важно

Всички манифестни файлове на YAML (solution.yml, publisher.ymlи т.ч.) трябва да бъдат поставени под съответните им поддиректории (solutions/<name>/, publishers/<name>/). Поставянето им в корена на хранилището предотвратява откриването на формата и кара инструмента SolutionPackager да се върне обратно към XML формата – което води до подвеждаща грешка за липсващ Customizations.xml. Повече информация: Отстраняване на неизправности в инструмента SolutionPackager

Форматиране на автоматично откриване

SolutionPackager (и pac solution pack) автоматично открива формата по следния начин:

Състояние Открит формат Поведение
solutions/*/solution.yml намерени – едно решение СЛАДЪК КАРТОФ Име на решение, подразбира се от името на подпапката
solutions/*/solution.yml намерени – множество решения СЛАДЪК КАРТОФ /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/
Комплекти добавки Напълно квалифицирани имена на типове, повторно нанесени по подразбиране (/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

Бележка

Когато се използва основна Git интеграция с Dataverse с обвързване на средата, всички решения в средата споделят един корен от хранилището с помощта на много решение оформление. Когато използвате обвързване на решение, всяко решение може да бъде обвързано с отделна папка.

Работа с папки във формат 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.