Nota
L'accés a aquesta pàgina requereix autorització. Podeu provar d'iniciar la sessió o de canviar els directoris.
L'accés a aquesta pàgina requereix autorització. Podeu provar de canviar els directoris.
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 cloneopac 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.