Αναφορά μορφής ελέγχου προέλευσης λύσεων YAML

Αυτό το άρθρο είναι μια αναφορά για τη μορφή στοιχείου ελέγχου προέλευσης που βασίζεται στο YAML που χρησιμοποιείται όταν:

  • Δέσμευση λύσεων με χρήση εγγενούς Διαθετική ενοποίηση Git σε Power Apps.
  • Εξαγάγετε λύσεις χρησιμοποιώντας pac solution clone το ή pac solution syncτο .
  • Εκτελέστε με μη αυτόματο τρόπο το SolutionPackager σε έναν φάκελο που περιέχει αρχεία διακήρυξης YAML.

Η μορφή YAML διαφέρει από την κλασική διάταξη XML. Η κατανόηση της δομής είναι σημαντική όταν θέλετε να συσκευάσετε με μη αυτόματο τρόπο έναν φάκελο YAML ξανά σε ένα .zip αρχείο που μπορεί να εισαγάγει το Dataverse.

Σημαντικό

Η υποστήριξη μορφής ελέγχου προέλευσης YAML στο pac απαιτεί Microsoft. PowerApps.CLI έκδοση 2.4.1 ή νεότερη. Κάντε λήψη της πιο πρόσφατης έκδοσης από το NuGet ή ενημερώστε μέσω του pac install latest. SolutionPackager.exe, η οποία παρέχεται με το πακέτο NuGet, υποστηρίζει τη μορφή YAML από την ίδια έκδοση.

Επισκόπηση δομής φακέλων

Μια ρίζα αποθετηρίου δεδομένων μορφής YAML περιέχει τους ακόλουθους καταλόγους ανώτατου επιπέδου:

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

Οι solutions/ κατάλογοι και publishers/ απαιτούνται. Όλοι οι φάκελοι στοιχείων στη ρίζα είναι προαιρετικοί και εξαρτώνται από το τι περιέχει η λύση.

Σημαντικό

Όλα τα αρχεία διακήρυξης YAML (solution.yml, publisher.ymlκαι ούτω καθεξής) πρέπει να τοποθετηθούν κάτω από τους αντίστοιχους υποκαταλόγους τους (solutions/<name>/, publishers/<name>/). Η τοποθέτησή τους στη ρίζα του αποθετηρίου αποτρέπει τον εντοπισμό μορφοποίησης και προκαλεί την επαναφορά του εργαλείου SolutionPackager στη μορφή XML , δημιουργώντας ένα παραπλανητικό σφάλμα σχετικά με ένα που λείπει Customizations.xml. Περισσότερες πληροφορίες: Αντιμετώπιση προβλημάτων εργαλείων SolutionPackager

Μορφοποίηση αυτόματου εντοπισμού

Το SolutionPackager (και pac solution pack) εντοπίζει αυτόματα τη μορφή ως εξής:

Κατάσταση Εντοπισμένη μορφή Συμπεριφορά
solutions/*/solution.yml βρέθηκαν — μία λύση YAML Όνομα λύσης που προκύπτει από το όνομα του υποφακέλου
solutions/*/solution.yml βρέθηκαν — πολλαπλές λύσεις YAML /SolutionName Απαιτείται όρισμα για τον καθορισμό της λύσης προς πακέτο
Δεν υπάρχει solutions/ υποκατάλογος XML (παλαιού τύπου) Αναμένει Other\Solution.xml και Other\Customizations.xml

Αρχεία δηλωτικού

solution.yml

Βρίσκεται στο solutions/<SolutionUniqueName>/solution.yml. Περιέχει μετα-δεδομένα λύσης ανώτατου επιπέδου — το ισοδύναμο YAML στη solution.xml μορφή XML.

Τα πεδία κλειδιών περιλαμβάνουν το μοναδικό όνομα, την έκδοση, το φιλικό όνομα, την περιγραφή και μια αναφορά στον εκδότη.

solutioncomponents.yml

Βρίσκεται στο solutions/<SolutionUniqueName>/solutioncomponents.yml. Εμφανίζει σχετικές διαδρομές σε όλα τα αρχεία στοιχείων που περιλαμβάνονται σε αυτήν τη λύση. Το SolutionPackager διαβάζει αυτό το αρχείο κατά τη διάρκεια του πακέτου για να εντοπίσει προελεύσεις στοιχείων.

Παράδειγμα αποσπάσματος:

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

rootcomponents.yml

Βρίσκεται στο solutions/<SolutionUniqueName>/rootcomponents.yml. Παραθέτει τα στοιχεία επιπέδου ρίζας (συνήθως πίνακες και άλλα αντικείμενα ανώτατου επιπέδου) που ανήκουν σε αυτήν τη λύση.

Note

Εάν ένα στοιχείο δηλώνεται στο αλλά τα αρχεία προέλευσής του απουσιάζουν από τον φάκελο (για παράδειγμα, ένα αρχείο εφαρμογής καμβά στην rootcomponents.yml.msappπεριοχή ), το SolutionPackager εμφανίζει μια προειδοποίηση και παραλείπει αυτό το στοιχείο από το συσκευασμένο canvasapps/<name>/..zip Η λειτουργία του πακέτου εξακολουθεί να ολοκληρώνεται με επιτυχία με τον κωδικό εξόδου 0.

Η επιτυχία της συσκευασίας δεν εγγυάται την επιτυχία της εισαγωγής. Εάν solutioncomponents.yml παραλειφθεί η απαιτούμενη διαδρομή εξάρτησης , όπως οι φάκελοι γονικής οντότητας ή οι ορισμοί σχέσεων στην περιοχή entityrelationships/ — τα πακέτα λύσεων χωρίς σφάλμα, αλλά αποτυγχάνουν στην εισαγωγή με ένα μήνυμα όπως: "Από τους ορισμούς συσχετισμένων σχέσεων λείπουν χαρακτηριστικά." Να εξασφαλίζετε πάντα ότι solutioncomponents.yml περιλαμβάνονται όλες οι εξαρτώμενες οντότητες και σχέσεις, όχι μόνο εκείνες που ανήκουν στη λύση.

missingdependencies.yml

Βρίσκεται στο solutions/<SolutionUniqueName>/missingdependencies.yml. Καταγράφει τυχόν εξαρτήσεις λύσεων που δεν υπήρχαν κατά την τελευταία εξαγωγή της λύσης. Χρησιμοποιείται για ενημερωτικούς σκοπούς και για την επικύρωση της πληρότητας κατά την εισαγωγή.

publisher.yml

Βρίσκεται στο publishers/<PublisherUniqueName>/publisher.yml. Περιέχει τον ορισμό εκδότη — μοναδικό όνομα, εμφανιζόμενο όνομα, πρόθημα προσαρμογής και πρόθημα τιμής επιλογής.

Ελάχιστη απαιτούμενη δομή:

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:

Υποστήριξη τύπου στοιχείου

Ο παρακάτω πίνακας παραθέτει τον τρόπο χειρισμού κάθε τύπου στοιχείου στη μορφή YAML.

Τύπος στοιχείου Σε μορφή YAML Σημειώσεις
Οντότητες (πίνακες), χαρακτηριστικά, φόρμες, προβολές ✓ Αρχεία YAML Αποθηκεύονται ως μεμονωμένα αρχεία YAML ανά δευτερεύουσα μορφή
Ροές εργασιών (κλασικές) ✓ Αρχεία YAML Υπό workflows/
Σύγχρονες ροές (Power Automate ροές cloud) ✓ — Μόνο μορφή YAML Στην περιοχή modernflows/; δεν υποστηρίζεται σε μορφή XML
Εφαρμογές τύπου Canvas ✓ — Μόνο μορφή YAML .msapp δυαδική κάτω από canvasapps/<name>/, δεν υποστηρίζεται σε μορφή XML
Ορισμοί μεταβλητών περιβάλλοντος ✓ Αρχεία XML Μεμονωμένα .xml αρχεία στην περιοχή environmentvariabledefinitions/
Τιμές μεταβλητών περιβάλλοντος ✓ Αρχείο JSON Αποθηκευμένες ως environment_variable_values.json
Προσαρμοσμένοι σύνδεσμοι Υπό connectors/
Συγκροτήσεις προσθηκών Πλήρως προσδιορισμένα ονόματα τύπων που αντιστοιχίζονται εκ νέου από προεπιλογή (/remapPluginTypeNames)
Πόροι Web Υπό webresources/
Ρόλοι ασφαλείας Αποθηκεύονται ως XML εσωτερικά, φιλτραρισμένη ανά λύση
Σύνολα επιλογών (καθολικά) Αποθηκεύονται ως XML, φιλτραρισμένη ανά λύση
Πίνακες εργαλείων Αποθηκεύονται ως XML, φιλτραρισμένη ανά λύση
Χάρτες τοποθεσίας Αποθηκεύονται ως XML, φιλτραρισμένη ανά λύση
Προσαρμογές κορδέλας Αποθηκεύονται ως XML, φιλτραρισμένη ανά λύση
Σχέσεις οντοτήτων Υπό entityrelationships/

Note

Τα στοιχεία που αποθηκεύονται ως XML εσωτερικά μετατρέπονται αυτόματα μεταξύ XML και YAML κατά τη διάρκεια των λειτουργιών συσκευασίας και αποσυσκευασίας. Μπορείτε να τα συντάξετε ως αρχεία YAML. το εργαλείο χειρίζεται τη μετατροπή.

Αποθετήρια πολλαπλών λύσεων

Μια μοναδική ρίζα αποθετηρίου δεδομένων μπορεί να περιέχει πολλές λύσεις. Όλες οι λύσεις μοιράζονται τους ίδιους φακέλους στοιχείων. solutioncomponents.yml Σε κάθε λύση, ελέγχει ποιες διαδρομές στοιχείων ανήκουν σε αυτήν τη λύση.

Παράδειγμα δομής με δύο λύσεις:

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

Συσκευασία μιας συγκεκριμένης λύσης από έναν φάκελο πολλαπλών λύσεων

Χρήση SolutionPackager.exe:

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

Χρήση pac solution pack του (μόνο για φακέλους μίας λύσης — για πολλαπλές λύσεις, χρησιμοποιήστε SolutionPackager.exe απευθείας με /SolutionNameτο ):

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

Note

Όταν χρησιμοποιείτε την εγγενή ενοποίηση του Dataverse Git με τη σύνδεση περιβάλλοντος, όλες οι λύσεις στο περιβάλλον μοιράζονται μια μοναδική ρίζα αποθετηρίου δεδομένων χρησιμοποιώντας τη διάταξη πολλαπλών λύσεων. Όταν χρησιμοποιείτε σύνδεση λύσεων, κάθε λύση μπορεί να συνδεθεί σε έναν ξεχωριστό φάκελο.

Εργασία με φακέλους μορφοποίησης YAML

Συσκευασία ενός φακέλου YAML σε ένα αρχείο .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

Αποκτήστε έναν πλήρη φάκελο YAML από το Dataverse

Ο προτεινόμενος τρόπος για να λάβετε έναν πλήρη φάκελο YAML με δυνατότητα συσκευασίας είναι να χρησιμοποιήσετε το pac solution clone:

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

Αυτό εξάγει τη λύση στη μορφή YAML, συμπεριλαμβανομένων όλων των αρχείων προέλευσης στοιχείων. Εναλλακτικά, χρησιμοποιήστε εγγενή ενοποίηση Git για δέσμευση από Power Apps — τα δεσμευμένα αρχεία είναι σε μορφή YAML και έχουν δυνατότητα συσκευασίας.

Επαλήθευση του φακέλου πριν από τη συσκευασία

Ελέγξτε ότι ο solutions/<name>/ φάκελος υπάρχει και ότι όλες οι διαδρομές που βρίσκονται στην solutioncomponents.yml επίλυση σε πραγματικά αρχεία. Τυχόν διαδρομές που λείπουν έχουν ως αποτέλεσμα προειδοποιήσεις κατά τη διάρκεια του πακέτου και αυτά τα στοιχεία παραλείπονται.

Σχέση με την ενοποίηση του Dataverse Git

Η μορφή ελέγχου προέλευσης YAML είναι η κανονικός μορφή που χρησιμοποιείται από την ενοποίηση Dataverse Git. Όταν οι δημιουργοί δεσμεύουν λύσεις από το Power Apps, τα αρχεία που έχουν συνταχθεί για να Azure DevOps χρησιμοποιούν αυτήν τη μορφή. Οι προγραμματιστές με προτεραιότητα κώδικα μπορούν να εργαστούν με το ίδιο αποθετήριο δεδομένων χρησιμοποιώντας τα εργαλεία CLI που περιγράφονται εδώ.

Για πληροφορίες σχετικά με τη σύνδεση περιβαλλόντων στο Git, ανατρέξτε στο θέμα Ρύθμιση ενοποίησης Dataverse Git.