Reference til YAML-versionsstyringsformat for løsning

Denne artikel er en reference til det YAML-baserede versionsstyringsformat, der bruges, når du:

  • Bekræft løsninger ved hjælp af oprindelig Dataverse Git-integration i Power Apps.
  • Udtræk løsninger ved hjælp af pac solution clone eller pac solution sync.
  • Kør SolutionPackager manuelt mod en mappe, der indeholder YAML-manifestfiler.

YAML-formatet adskiller sig fra det klassiske XML-layout. Det er vigtigt at forstå strukturen, når du manuelt vil pakke en YAML-mappe tilbage til en .zip fil, som Dataverse kan importere.

Vigtigt!

Understøttelse af YAML-versionsstyringsformat i kommandolinjegrænsefladen pac kræver Microsoft. PowerApps.CLI version 2.4.1 eller nyere. Download den nyeste version fra NuGet eller opdater via pac install latest. SolutionPackager.exe, der leveres sammen med NuGet-pakken, understøtter YAML-formatet fra den samme version.

Oversigt over mappestruktur

En lagerrod i YAML-format indeholder følgende mapper på øverste niveau:

<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]/

Mapperne solutions/ og publishers/ er påkrævet. Alle komponentmapper i roden er valgfrie og afhænger af, hvad løsningen indeholder.

Vigtigt!

Alle YAML-manifestfiler (solution.yml, publisher.ymlosv.) skal placeres under deres respektive undermapper (solutions/<name>/, publishers/<name>/). Hvis de placeres i lagerroden, forhindres formateringsregistrering, og SolutionPackager-værktøjet falder tilbage til XML-formatet, hvilket medfører en vildledende fejl om en manglende Customizations.xml. Flere oplysninger: Fejlfinding af SolutionPackager-værktøj

Formatér automatisk registrering

SolutionPackager (og pac solution pack) registrerer automatisk formatet på følgende måde:

Betingelse Registreret format Adfærd
solutions/*/solution.yml fundet – én løsning YAML Løsningsnavnet blev udledt fra navnet på undermappen
solutions/*/solution.yml found – flere løsninger YAML /SolutionName argument, der kræves for at angive, hvilken løsning der skal pakkes
Der findes ingen solutions/ undermappe XML (ældre) Forventer Other\Solution.xml og Other\Customizations.xml

Manifestfiler

solution.yml

Placeret på solutions/<SolutionUniqueName>/solution.yml. Indeholder løsningsmetadata på øverste niveau – YAML-ækvivalenten af solution.xml i XML-formatet.

Nøglefelter omfatter løsningens entydige navn, version, brugervenlige navn, beskrivelse og en reference til udgiveren.

solutioncomponents.yml

Placeret på solutions/<SolutionUniqueName>/solutioncomponents.yml. Viser relative stier til alle komponentfiler, der er inkluderet i denne løsning. SolutionPackager læser denne fil under pakken for at finde komponentkilder.

Eksempel på uddrag:

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

rootcomponents.yml

Placeret på solutions/<SolutionUniqueName>/rootcomponents.yml. Viser en liste over de komponenter på rodniveau (typisk tabeller og andre objekter på øverste niveau), der hører til denne løsning.

Bemærkning

Hvis en komponent erklæres i , men kildefilerne ikke findes i rootcomponents.yml mappen (f.eks. en lærredsappfil .msapp under canvasapps/<name>/), udsender SolutionPackager en advarsel og udelader komponenten fra den pakkede .zip. Pakkehandlingen fuldføres stadig med afslutningskoden 0.

Pakkesucces garanterer ikke, at importen lykkedes. Hvis solutioncomponents.yml udelader påkrævede afhængighedsstier – f.eks. overordnede objektmapper eller relationsdefinitioner under entityrelationships/ – pakker løsningen uden fejl, men mislykkes ved import med en meddelelse som f.eks.: "Attributter mangler tilknyttede relationsdefinitioner". Sørg altid for, at solutioncomponents.yml alle afhængige objekter og relationer medtages, ikke kun de løsningsejede.

missingdependencies.yml

Placeret på solutions/<SolutionUniqueName>/missingdependencies.yml. Registrerer alle løsningsafhængigheder, der ikke var til stede, da løsningen sidst blev eksporteret. Bruges til orientering og til at validere fuldstændigheden ved import.

publisher.yml

Placeret på publishers/<PublisherUniqueName>/publisher.yml. Indeholder udgiverdefinitionen – entydigt navn, vist navn, tilpasningspræfiks og præfiks for indstillingsværdi.

Minimal påkrævet struktur:

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:

Understøttelse af komponenttype

I følgende tabel vises, hvordan hver komponenttype håndteres i YAML-formatet.

Komponenttype I YAML-format Bemærkninger
Objekter (tabeller), attributter, formularer, visninger ✓ YAML-filer Gemt som individuelle YAML-filer pr. underkomponent
Arbejdsprocesser (klassisk) ✓ YAML-filer Under workflows/
Moderne flow (Power Automate cloudflow) ✓ – kun YAML-format Under modernflows/; understøttes ikke i XML-format
Canvas-apps ✓ – kun YAML-format .msapp Binær under canvasapps/<name>/; understøttes ikke i XML-format
Definitioner af miljøvariabler ✓ XML-filer Individuelle .xml filer under environmentvariabledefinitions/
Værdier for miljøvariabel ✓ JSON-fil Gemt som environment_variable_values.json
Brugerdefinerede connectorer Under connectors/
Plug-in-assemblies Fuldt kvalificerede typenavne gentilsluttes som standard (/remapPluginTypeNames)
Webressourcer Under webresources/
Sikkerhedsroller Gemt som XML internt. filtreret pr. løsning
Grupperede indstillinger (global) Gemt som XML. filtreret pr. løsning
Dashboards Gemt som XML. filtreret pr. løsning
Webstedsoversigter Gemt som XML. filtreret pr. løsning
Tilpasninger af båndet Gemt som XML. filtreret pr. løsning
Objektrelationer Under entityrelationships/

Bemærkning

Komponenter, der gemmes som XML internt, konverteres automatisk mellem XML og YAML under pakke- og udpakningshandlinger. Du kan skrive dem som YAML-filer. værktøjet håndterer konverteringen.

Lagre med flere løsninger

En enkelt lagerrod kan indeholde flere løsninger. Alle løsninger deler de samme komponentmapper. solutioncomponents.yml i hver løsning styrer, hvilke komponentstier der tilhører den pågældende løsning.

Eksempelstruktur med to løsninger:

<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/

Pakke en bestemt løsning fra en mappe med flere løsninger

Ved hjælp af SolutionPackager.exe:

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

Brug pac solution pack (kun mapper med én løsning – brug SolutionPackager.exe direkte sammen med /SolutionName) til flere løsninger:

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

Bemærkning

Når du bruger oprindelig Dataverse Git-integration med miljøbinding, deler alle løsninger i miljøet en enkelt lagerrod ved hjælp af layoutet med flere løsninger. Når du bruger løsningsbinding, kan hver løsning bindes til en separat mappe.

Arbejde med YAML-formatmapper

Pak en YAML-mappe til en .zip-fil

# 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

Hent en komplet YAML-mappe fra Dataverse

Den anbefalede måde at få en komplet YAML-mappe, der kan pakkes, er at bruge pac solution clone:

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

Dette udtrækker løsningen til YAML-formatet, herunder alle komponentkildefiler. Du kan også bruge oprindelig Git-integration til at bekræfte fra Power Apps – de bekræftede filer er i YAML-format og kan pakkes fuldt ud.

Kontrollér mappen, før du pakker den

Kontrollér, at mappen solutions/<name>/ findes, og at alle stier i solutioncomponents.yml oversættes til faktiske filer. Manglende stier resulterer i advarsler under pakken, og disse komponenter udelades.

Relation til Git-integration af dataverse

YAML-versionsstyringsformatet er det vedtagne format, der bruges af Integration af Dataverse Git. Når oprettere anvender løsninger fra Power Apps, bruger de filer, der er skrevet til Azure DevOps dette format. Først-udviklere kan arbejde med det samme lager ved hjælp af de kommandolinjegrænsefladeværktøjer, der er beskrevet her.

Du kan få oplysninger om, hvordan du opretter forbindelse mellem miljøer og Git, under Konfiguration af Git-integration af Dataverse.