Бележка
Достъпът до тази страница изисква удостоверяване. Можете да опитате да влезете или да промените директориите.
Достъпът до тази страница изисква удостоверяване. Можете да опитате да промените директориите.
Тази статия е справка за базирания на 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.