Comparteix a través de


Referència del format de control de versions YAML de la solució

Aquest article és una referència per al format de control de versions basat en YAML que s'utilitza quan tu:

  • Confirma solucions utilitzant integració nativa Dataverse Git a Power Apps.
  • Extreu solucions utilitzant pac solution clone o pac solution sync.
  • Executa manualment SolutionPackager en una carpeta que contingui fitxers de manifest YAML.

El format YAML difereix del disseny XML clàssic. Entendre l'estructura és important quan vols empaquetar manualment una carpeta YAML en un .zip fitxer que Dataverse pugui importar.

Important

El suport per al format de control de versions YAML a la CLI pac requereix Microsoft. PowerApps.CLI versió 2.4.1 o posterior. Descarrega l'última versió de NuGet o actualitza-la a través de pac install latest. SolutionPackager.exe, que inclou el paquet NuGet, suporta el format YAML de la mateixa versió.

Visió general de l'estructura de carpetes

L'arrel d'un repositori en format YAML conté els següents directoris de primer nivell:

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

Els solutions/ directoris i publishers/ són obligatoris. Totes les carpetes de components a l'arrel són opcionals i depenen del que contingui la solució.

Important

Tots els fitxers de manifest YAML (solution.yml, publisher.yml, i així successivament) s'han de col·locar sota els seus respectius subdirectoris (solutions/<name>/, publishers/<name>/). Col·locar-los a l'arrel del repositori impedeix la detecció de formats i fa que l'eina SolutionPackager torni al format XML — produint un error enganyós sobre un format .Customizations.xml Més informació: Resolució de problemes de l'eina SolutionPackager

Detecció automàtica de formats

SolutionPackager (i pac solution pack) detecten automàticament el format de la manera següent:

Condició Format detectat Comportament
solutions/*/solution.yml trobada — una solució YAML Nom de la solució inferit del nom de la subcarpeta
solutions/*/solution.yml trobada — múltiples solucions YAML /SolutionName argument necessari per especificar quina solució empaquetar
No hi ha solutions/ cap subdirectori present XML (llegat) Expectatives Other\Solution.xml i Other\Customizations.xml

Fitxers de manifest

solution.yml

Situat a solutions/<SolutionUniqueName>/solution.yml. Conté metadades de la solució de primer nivell — l'equivalent YAML de solution.xml en format XML.

Els camps clau inclouen el nom únic de la solució, la versió, el nom amic, la descripció i una referència a l'editor.

solutioncomponents.yml

Situat a solutions/<SolutionUniqueName>/solutioncomponents.yml. Llista els camins relatius a tots els fitxers de components inclosos en aquesta solució. SolutionPackager llegeix aquest fitxer durant el pack per localitzar les fonts dels components.

Exemple d'extracte:

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

rootcomponents.yml

Situat a solutions/<SolutionUniqueName>/rootcomponents.yml. Llista els components a nivell arrel (normalment taules i altres objectes de nivell superior) que pertanyen a aquesta solució.

Nota

Si un component es declara a rootcomponents.yml però els seus fitxers font no apareixen de la carpeta (per exemple, un fitxer d'aplicació .msapp canvas sota canvasapps/<name>/), SolutionPackager emet un avís i omet aquest component de la carpeta empaquetada .zip. L'operació del pack encara es completa amb èxit amb el codi de sortida 0.

L'èxit del paquet no garanteix l'èxit de la importació. Si solutioncomponents.yml omet les rutes de dependència requerides — com ara carpetes d'entitats pares o definicions de relacions sota entityrelationships/ — la solució s'empaqueta sense error però falla a la importació amb un missatge com: "Els atributs perden definicions de relació associades." Assegura't solutioncomponents.yml sempre d'incloure totes les entitats i relacions dependents, no només les propietat de la solució.

missingdependencies.yml

Situat a solutions/<SolutionUniqueName>/missingdependencies.yml. Registra qualsevol dependència de la solució que no estigués present quan la solució es va exportar per última vegada. S'utilitza amb finalitats informatives i per validar la integritat en la importació.

publisher.yml

Situat a publishers/<PublisherUniqueName>/publisher.yml. Conté la definició de l'editor — nom únic, nom de visualització, prefix de personalització i prefix de valor d'opció.

Estructura mínima requerida:

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:

Suport per a tipus de components

La taula següent mostra com es gestiona cada tipus de component en el format YAML.

Tipus de component En format YAML Notes
Entitats (taules), atributs, formularis, vistes ✓ Fitxers YAML Emmagatzemats com a fitxers YAML individuals per subcomponent
Fluxos de treball (clàssic) ✓ Fitxers YAML Sota workflows/
Fluxos moderns (fluxos de núvol Power Automate) ✓ — Només format YAML Sota modernflows/; no suportat en format XML
Aplicacions de llenç ✓ — Només format YAML .msapp binari sota canvasapps/<name>/; no suportat en format XML
Definicions de variables ambientals ✓ Fitxers XML Fitxers individuals .xml sota environmentvariabledefinitions/
Valors de variables ambientals ✓ Fitxer JSON Emmagatzemat com environment_variable_values.json
Connectors personalitzats Sota connectors/
Conjunts d'endolls Noms de tipus completament qualificats reassignats per defecte (/remapPluginTypeNames)
Recursos web Sota webresources/
Funcions de seguretat Emmagatzemat com a XML internament; filtrat per solució
Conjunts d'opcions (globals) Emmagatzemat com a XML; filtrat per solució
Escriptoris digitals Emmagatzemat com a XML; filtrat per solució
Mapes de llocs Emmagatzemat com a XML; filtrat per solució
Personalitzacions de la cinta Emmagatzemat com a XML; filtrat per solució
Relacions d'entitats Sota entityrelationships/

Nota

Els components emmagatzemats internament com a XML es converteixen automàticament entre XML i YAML durant les operacions d'empaquetament i desempaquetat. Els pots crear com a fitxers YAML; L'eina s'encarrega de la conversió.

Repositoris multi-solució

Una arrel d'un sol repositori pot contenir múltiples solucions. Totes les solucions comparteixen les mateixes carpetes de components; solutioncomponents.yml en cada solució es controla quins camins de components pertanyen a aquesta solució.

Exemple d'estructura amb dues solucions:

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

Empaquetar una solució específica d'una carpeta multi-solució

Utilitzant SolutionPackager.exe:

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

Utilitzant pac solution pack (només carpetes d'una sola solució — per a múltiples solucions, utilitza SolutionPackager.exe directament amb /SolutionName):

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

Nota

Quan s'utilitza la integració nativa de Dataverse Git amb enllaç d'entorn, totes les solucions de l'entorn comparteixen una arrel de repositori únic utilitzant la disposició multi-solució. Quan s'utilitza l'enllaç de solució, cada solució es pot vincular a una carpeta separada.

Treballant amb carpetes en format YAML

Empaqueta una carpeta YAML en un fitxer .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

Obtingues una carpeta YAML completa de Dataverse

La manera recomanada d'obtenir una carpeta YAML completa i empaquetable és utilitzar pac solution clone:

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

Això extreu la solució al format YAML, incloent-hi tots els fitxers font dels components. Alternativament, utilitza integració nativa amb Git per fer commit des de Power Apps — els fitxers compromès estan en format YAML i són totalment empaquetables.

Verifica la carpeta abans d'empaquetar

Comprova que la solutions/<name>/ carpeta existeixi i que totes les rutes es solutioncomponents.yml resolguin a fitxers reals. Qualsevol camí que falti provoca avisos durant l'empaquetatge i aquests components s'ometiam.

Relació amb la integració Git de Dataverse

El format de control de versions YAML és el format canònic utilitzat per la integració Git de Dataverse. Quan els fabricants comprometen solucions de Power Apps, els fitxers escrits a Azure DevOps utilitzen aquest format. Els desenvolupadors de codi primer poden treballar amb el mateix repositori utilitzant les eines CLI descrites aquí.

Per a informació sobre com connectar entorns a Git, vegeu la configuració d'integració Dataverse Git.