Del via


Referanse for løsnings-YAML-kildekontrollformat

Denne artikkelen er en referanse for det YAML-baserte kildekontrollformatet som brukes når du:

  • Utfør løsninger ved hjelp av opprinnelig Dataverse Git-integrasjon i Power Apps.
  • Trekk ut løsninger ved hjelp av pac solution clone eller pac solution sync.
  • Kjør SolutionPackager manuelt mot en mappe som inneholder YAML-manifestfiler.

YAML-formatet er forskjellig fra det klassiske XML-oppsettet. Det er viktig å forstå strukturen når du vil pakke en YAML-mappe manuelt tilbake til en .zip fil som Dataverse kan importere.

Viktig!

STØTTE for YAML-kildekontrollformat i pac CLI krever Microsoft. PowerApps.CLI versjon 2.4.1 eller nyere. Last ned den nyeste versjonen fra NuGet eller oppdater via pac install latest. SolutionPackager.exe, som leveres med NuGet-pakken, støtter YAML-formatet fra samme versjon.

Oversikt over mappestruktur

En repositoriumrot i YAML-format inneholder følgende kataloger på øverste nivå:

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

publishers/ Og solutions/ kataloger kreves. Alle komponentmapper ved roten er valgfrie og avhenger av hva løsningen inneholder.

Viktig!

Alle YAML-manifestfiler (solution.yml, publisher.ymlog så videre) må plasseres under de respektive underkatalogene (solutions/<name>/, publishers/<name>/). Hvis du plasserer dem på repositoriumroten, forhindres formatgjenkjenning og gjør at SolutionPackager-verktøyet faller tilbake til XML-formatet , noe som gir en misvisende feil om manglende Customizations.xml. Mer informasjon: Feilsøking av Løsningspakkeverktøy

Formater automatisk gjenkjenning

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

Betingelse Oppdaget format Virkemåte
solutions/*/solution.yml funnet – én løsning YAML Løsningsnavn utledet fra undermappenavnet
solutions/*/solution.yml funnet – flere løsninger YAML /SolutionName argumentet som kreves for å angi hvilken løsning som skal pakkes
Ingen solutions/ underkatalog til stede XML (eldre) Other\Solution.xml Forventer ogOther\Customizations.xml

Manifestfiler

solution.yml

Plassert på solutions/<SolutionUniqueName>/solution.yml. Inneholder løsningsmetadata på øverste nivå – YAML-ekvivalenten solution.xml i XML-formatet.

Nøkkelfelt inkluderer løsningens unike navn, versjon, egendefinert navn, beskrivelse og en referanse til utgiveren.

solutioncomponents.yml

Plassert på solutions/<SolutionUniqueName>/solutioncomponents.yml. Viser relative baner til alle komponentfiler som er inkludert i denne løsningen. SolutionPackager leser denne filen under pakken for å finne komponentkilder.

Eksempelutdrag:

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

rootcomponents.yml

Plassert på solutions/<SolutionUniqueName>/rootcomponents.yml. Viser komponentene på rotnivå (vanligvis tabeller og andre objekter på øverste nivå) som tilhører denne løsningen.

Bemerkning

Hvis en komponent deklareres i rootcomponents.yml , men kildefilene er fraværende fra mappen (for eksempel en lerretsappfil .msapp under canvasapps/<name>/), avgir SolutionPackager en advarsel og utelater komponenten fra den pakkede .zip. Pakkeoperasjonen fullføres fortsatt med avslutningskode 0.

Pakkesuksess garanterer ikke at importen lykkes. Hvis solutioncomponents.yml utelater nødvendige avhengighetsbaner, for eksempel overordnede enhetsmapper eller relasjonsdefinisjoner under entityrelationships/ , pakker løsningspakkene uten feil, men mislykkes ved import med en melding som: «Attributter mangler tilknyttede relasjonsdefinisjoner.» Sørg alltid for at solutioncomponents.yml du inkluderer alle avhengige enheter og relasjoner, ikke bare de løsningseide.

missingdependencies.yml

Plassert på solutions/<SolutionUniqueName>/missingdependencies.yml. Registrerer eventuelle løsningsavhengigheter som ikke var til stede da løsningen sist ble eksportert. Brukes til informasjonsformål og for å validere fullstendighet ved import.

publisher.yml

Plassert på publishers/<PublisherUniqueName>/publisher.yml. Inneholder utgiverdefinisjonen – unikt navn, visningsnavn, tilpassingsprefiks og prefiks for alternativverdi.

Minimal nødvendig 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:

Støtte for komponenttype

Tabellen nedenfor viser hvordan hver komponenttype håndteres i YAML-format.

Komponenttype I YAML-format Merknader
Enheter (tabeller), attributter, skjemaer, visninger ✓ YAML-filer Lagret som individuelle YAML-filer per delkomponent
Arbeidsflyter (klassisk) ✓ YAML-filer Under workflows/
Moderne flyter (Power Automate skyflyter) ✓ — bare YAML-format Under modernflows/; støttes ikke i XML-format
Lerretsapper ✓ — bare YAML-format .msapp binær under canvasapps/<name>/; støttes ikke i XML-format
Miljøvariabeldefinisjoner ✓ XML-filer Individuelle .xml filer under environmentvariabledefinitions/
Miljøvariabelverdier ✓ JSON-fil Lagret som environment_variable_values.json
Egendefinerte koblinger Under connectors/
Plugin-modulsamlinger Fullstendige typenavn tilordnet på nytt som standard (/remapPluginTypeNames)
Nettressurser Under webresources/
Sikkerhetsroller Lagret som XML internt. filtrert per løsning
Alternativsett (global) Lagret som XML. filtrert per løsning
Oversikter Lagret som XML. filtrert per løsning
Områdekart Lagret som XML. filtrert per løsning
Båndtilpasninger Lagret som XML. filtrert per løsning
Enhetsrelasjoner Under entityrelationships/

Bemerkning

Komponenter som er lagret som XML internt, konverteres automatisk mellom XML og YAML under pakke- og pakkeoperasjoner. Du kan redigere dem som YAML-filer. verktøyet håndterer konverteringen.

Repositorier med flere løsninger

En enkelt repositoriumrot kan inneholde flere løsninger. Alle løsninger deler de samme komponentmappene. solutioncomponents.yml i hver løsning kontrollerer hvilke komponentbaner som tilhører den løsningen.

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 flerløsningsmappe

Bruke SolutionPackager.exe:

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

Bruk pac solution pack (bare enkeltløsningsmapper – for flerløsning, bruk SolutionPackager.exe direkte med /SolutionName):

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

Bemerkning

Når du bruker opprinnelig Datavers Git-integrasjon med miljøbinding, deler alle løsninger i miljøet én enkelt repositoriumrot ved hjelp av oppsettet med flere løsninger. Når du bruker løsningsbinding, kan hver løsning bindes til en egen mappe.

Arbeide med YAML-formatmapper

Pakke en YAML-mappe inn i 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

Få en fullstendig YAML-mappe fra Dataverse

Den anbefalte måten å få en komplett, pakkebar YAML-mappe på, er å bruke pac solution clone:

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

Dette trekker ut løsningen i YAML-formatet, inkludert alle komponentkildefiler. Alternativt kan du bruke opprinnelig Git-integrasjon til å utføre fra Power Apps – de forpliktede filene er i YAML-format og kan pakkes fullstendig.

Bekreft mappen før pakking

Kontroller at solutions/<name>/ mappen finnes, og at alle banene i solutioncomponents.yml løses til faktiske filer. Eventuelle manglende baner resulterer i advarsler under pakken, og disse komponentene utelates.

Relasjon til Git-integrasjon for datavers

YAML-kildekontrollformatet er det kanoniske formatet som brukes av Datavers Git-integrasjon. Når beslutningstakere utfører løsninger fra Power Apps, bruker filene som er skrevet til Azure DevOps dette formatet. Kode-først-utviklere kan arbeide med samme repositorium ved hjelp av CLI-verktøyene som er beskrevet her.

Hvis du vil ha informasjon om hvordan du kobler miljøer til Git, kan du se Konfigurasjon av Git-integrering for Dataverse.