Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Cet article est une référence pour le format de contrôle de code source basé sur YAML utilisé lorsque vous procédez comme suit :
- Valider des solutions à l’aide de l’intégration git native Dataverse Git dans Power Apps.
- Extraire des solutions à l’aide
pac solution cloneoupac solution sync. - Exécutez manuellement SolutionPackager sur un dossier qui contient des fichiers manifeste YAML.
Le format YAML diffère de la disposition XML classique. Comprendre la structure est importante lorsque vous souhaitez empaqueter manuellement un dossier YAML dans un .zip fichier que Dataverse peut importer.
Important
La prise en charge du format de contrôle de code source YAML dans l’interface CLI pac nécessite Microsoft. PowerApps.CLI version 2.4.1 ou ultérieure. Téléchargez la dernière version à partir de NuGet ou mettez à jour via pac install latest. SolutionPackager.exe, fourni avec le package NuGet, prend en charge le format YAML à partir de la même version.
Vue d’ensemble de la structure des dossiers
Une racine de référentiel au format YAML contient les répertoires de niveau supérieur suivants :
<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]/
Les solutions/ répertoires et publishers/ les répertoires sont requis. Tous les dossiers de composants à la racine sont facultatifs et dépendent de ce que contient la solution.
Important
Tous les fichiers manifeste YAML (solution.yml, publisher.ymletc.) doivent être placés sous leurs sous-répertoires respectifs (solutions/<name>/, publishers/<name>/). Le fait de les placer à la racine du référentiel empêche la détection de format et provoque le retour de l’outil SolutionPackager au format XML, ce qui génère une erreur trompeuse au sujet d’une erreur manquante Customizations.xml. Plus d’informations : Résolution des problèmes de l’outil SolutionPackager
Mise en forme de la détection automatique
SolutionPackager (et pac solution pack) détectez automatiquement le format comme suit :
| État | Format détecté | Behavior |
|---|---|---|
solutions/*/solution.yml trouvé — une solution |
YAML | Nom de la solution déduit du nom du sous-dossier |
solutions/*/solution.yml trouvé : plusieurs solutions |
YAML |
/SolutionName argument requis pour spécifier la solution à packer |
Aucun solutions/ sous-répertoire présent |
XML (hérité) | Attend et Other\Solution.xmlOther\Customizations.xml |
Fichiers manifestes
solution.yml
Situé à solutions/<SolutionUniqueName>/solution.yml. Contient des métadonnées de solution de niveau supérieur : l’équivalent YAML du solution.xml format XML.
Les champs clés incluent le nom unique, la version, le nom convivial, la description et une référence au serveur de publication.
solutioncomponents.yml
Situé à solutions/<SolutionUniqueName>/solutioncomponents.yml. Répertorie les chemins d’accès relatifs à tous les fichiers de composant inclus dans cette solution. SolutionPackager lit ce fichier pendant le pack pour localiser les sources de composants.
Exemple d’extrait :
- Path: entities/account
- Path: entities/contact
- Path: canvasapps/myapp_<guid>
- Path: publishers/MyPublisher
rootcomponents.yml
Situé à solutions/<SolutionUniqueName>/rootcomponents.yml. Répertorie les composants de niveau racine (généralement des tables et d’autres objets de niveau supérieur) qui appartiennent à cette solution.
Note
Si un composant est déclaré dans rootcomponents.yml mais que ses fichiers sources sont absents du dossier (par exemple, un fichier d’application .msapp canevas sous canvasapps/<name>/), SolutionPackager émet un avertissement et omet ce composant à partir du packed .zip. L’opération pack se termine toujours avec le code de sortie 0.
La réussite du pack ne garantit pas la réussite de l’importation. Si solutioncomponents.yml vous omettez les chemins de dépendance requis ( tels que les dossiers d’entités parentes ou les définitions de relation sous ) entityrelationships/ les packs de solutions sans erreur, mais échouent lors de l’importation avec un message comme : « Les attributs ne sont pas des définitions de relation associées manquantes ». Veillez toujours à solutioncomponents.yml inclure toutes les entités et relations dépendantes, pas seulement celles appartenant à la solution.
missingdependencies.yml
Situé à solutions/<SolutionUniqueName>/missingdependencies.yml. Enregistre les dépendances de solution qui n’étaient pas présentes lors de la dernière exportation de la solution. Utilisé à des fins d’information et pour valider l’exhaustivité lors de l’importation.
publisher.yml
Situé à publishers/<PublisherUniqueName>/publisher.yml. Contient la définition de l’éditeur : nom unique, nom complet, préfixe de personnalisation et préfixe de valeur d’option.
Structure minimale requise :
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:
Prise en charge du type de composant
Le tableau suivant répertorie la façon dont chaque type de composant est géré au format YAML.
| Type de composant | Au format YAML | Notes |
|---|---|---|
| Entités (tables), attributs, formulaires, vues | ✓ Fichiers YAML | Stocké en tant que fichiers YAML individuels par sous-composant |
| Flux de travail (classique) | ✓ Fichiers YAML | Sous workflows/ |
| Flux modernes (flux cloud Power Automate) | ✓ — Format YAML uniquement | Sous modernflows/; non pris en charge au format XML |
| Applications canevas | ✓ — Format YAML uniquement |
.msapp binaire sous canvasapps/<name>/; non pris en charge au format XML |
| Définitions de variables d’environnement | ✓ Fichiers XML | Fichiers individuels .xml sous environmentvariabledefinitions/ |
| Valeurs des variables d’environnement | ✓ Fichier JSON | Stocké en tant que environment_variable_values.json |
| Connecteurs personnalisés | ✓ | Sous connectors/ |
| Assemblys du plug-in | ✓ | Noms de types complets remappés par défaut (/remapPluginTypeNames) |
| Ressources web | ✓ | Sous webresources/ |
| Rôles de sécurité | ✓ | Stocké en tant que XML en interne ; filtré par solution |
| Ensembles d’options (globaux) | ✓ | Stocké en tant que XML ; filtré par solution |
| Dashboards | ✓ | Stocké en tant que XML ; filtré par solution |
| Plans de site | ✓ | Stocké en tant que XML ; filtré par solution |
| Personnalisations du ruban | ✓ | Stocké en tant que XML ; filtré par solution |
| Entités-relations | ✓ | Sous entityrelationships/ |
Note
Les composants stockés en tant que XML en interne sont automatiquement convertis entre XML et YAML pendant les opérations de pack et de décompression. Vous pouvez les créer en tant que fichiers YAML ; l’outil gère la conversion.
Référentiels multi-solutions
Une racine de référentiel unique peut contenir plusieurs solutions. Toutes les solutions partagent les mêmes dossiers de composants ; solutioncomponents.yml dans chaque solution contrôle quels chemins de composant appartiennent à cette solution.
Exemple de structure avec deux solutions :
<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/
Empaquetage d’une solution spécifique à partir d’un dossier multi-solution
Utilisation de SolutionPackager.exe:
SolutionPackager.exe /action:Pack /zipfile:SolutionA.zip /folder:C:\repos\myrepo /SolutionName:SolutionA
Utilisation pac solution pack (dossiers à solution unique uniquement - pour plusieurs solutions, utilisez SolutionPackager.exe directement avec /SolutionName) :
pac solution pack --zipfile SolutionA.zip --folder C:\repos\myrepo
Note
Lors de l’utilisation de l’intégration De Dataverse Git native à la liaison d’environnement, toutes les solutions de l’environnement partagent une racine de référentiel unique à l’aide de la disposition multi-solution. Lorsque vous utilisez la liaison de solution, chaque solution peut être liée à un dossier distinct.
Utilisation des dossiers de format YAML
Empaquetez un dossier YAML dans un fichier .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
Obtenir un dossier YAML complet à partir de Dataverse
La méthode recommandée pour obtenir un dossier YAML complet et packable consiste à utiliser pac solution clone:
pac solution clone --name MySolutionUniqueName --outputDirectory C:\repos\myrepo
Cela extrait la solution au format YAML, y compris tous les fichiers sources du composant. Vous pouvez également utiliser l’intégration Git native pour valider à partir de Power Apps : les fichiers validés sont au format YAML et entièrement packables.
Vérifier le dossier avant l’empaquetage
Vérifiez que le solutions/<name>/ dossier existe et que tous les chemins d’accès résolus solutioncomponents.yml en fichiers réels sont résolus. Les chemins manquants entraînent des avertissements pendant le pack et ces composants sont omis.
Relation avec l’intégration de Dataverse Git
Le format de contrôle de code source YAML est le format canonique utilisé par l’intégration de Dataverse Git. Lorsque les créateurs valident des solutions à partir de Power Apps, les fichiers écrits dans Azure DevOps utilisent ce format. Les développeurs code-first peuvent utiliser le même référentiel à l’aide des outils CLI décrits ici.
Pour plus d’informations sur la connexion d’environnements à Git, consultez la configuration de l’intégration De Dataverse Git.