Notă
Accesul la această pagină necesită autorizare. Puteți încerca să vă conectați sau să modificați directoarele.
Accesul la această pagină necesită autorizare. Puteți încerca să modificați directoarele.
Acest articol este o referință pentru formatul de control sursă bazat pe YAML utilizat atunci când:
- Comiteți soluții utilizând integrarea nativă Dataverse Git în Power Apps.
- Extrageți soluții utilizând
pac solution clonesaupac solution sync. - Rulați manual SolutionPackager într-un folder care conține fișiere manifest YAML.
Formatul YAML diferă de aspectul XML clasic. Înțelegerea structurii este importantă atunci când doriți să împachetați manual un folder YAML într-un .zip fișier pe care Dataverse îl poate importa.
Important
Suportul pentru formatul controlului sursă YAML din pac CLI necesită Microsoft. PowerApps.CLI versiunea 2.4.1 sau o versiune mai recentă. Descărcați cea mai recentă versiune de la NuGet sau actualizați prin pac install latest. SolutionPackager.exe, care se livrează cu pachetul NuGet, acceptă formatul YAML din aceeași versiune.
Prezentare generală a structurii folderului
O rădăcină de depozit în format YAML conține următoarele directoare de nivel superior:
<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]/
Sunt necesare directoarele solutions/ și publishers/ . Toate folderele componente de la rădăcină sunt opționale și depind de ceea ce conține soluția.
Important
Toate fișierele manifest YAML (solution.yml, publisher.ymlși așa mai departe) trebuie plasate sub subdirectoriile respective (solutions/<name>/, publishers/<name>/). Plasarea lor la rădăcina depozitului împiedică detectarea formatului și determină ca instrumentul SolutionPackager să revină la formatul XML , producând o eroare înșelătoare despre lipsa Customizations.xml. Mai multe informații: Depanarea instrumentului SolutionPackager
Formatarea detectării automate
SolutionPackager (și pac solution pack) detectează automat formatul după cum urmează:
| Condiție | Format detectat | Comportamentul |
|---|---|---|
solutions/*/solution.yml găsite — o soluție |
YAML | Numele soluției dedus din numele subfolderului |
solutions/*/solution.yml găsit — soluții multiple |
YAML |
/SolutionName argument necesar pentru a specifica soluția de împachetat |
Nu există solutions/ subdirector prezent |
XML (moștenit) |
Other\Solution.xml Se așteaptă șiOther\Customizations.xml |
Fișiere manifest
solution.yml
Situat la solutions/<SolutionUniqueName>/solution.yml. Conține metadate de soluții de nivel superior - echivalentul YAML al solution.xml formatului XML.
Câmpurile cheie includ numele unic al soluției, versiunea, numele prietenos, descrierea și o referință la editor.
solutioncomponents.yml
Situat la solutions/<SolutionUniqueName>/solutioncomponents.yml. Listează căile relative la toate fișierele componente incluse în această soluție. SolutionPackager citește acest fișier în timpul pachetului pentru a găsi sursele componentei.
Exemplu de fragment:
- Path: entities/account
- Path: entities/contact
- Path: canvasapps/myapp_<guid>
- Path: publishers/MyPublisher
rootcomponents.yml
Situat la solutions/<SolutionUniqueName>/rootcomponents.yml. Listează componentele de nivel rădăcină (de obicei tabele și alte obiecte de nivel superior) care aparțin acestei soluții.
Notă
Dacă o componentă este declarată în rootcomponents.yml , dar fișierele sale sursă sunt absente din folder (de exemplu, un fișier aplicație .msapp pânză sub canvasapps/<name>/), SolutionPackager emite un avertisment și omite acea componentă din pachetul împachetat .zip. Operațiunea pachetului se finalizează în continuare cu succes, cu codul de ieșire 0.
Succesul pachetului nu garantează succesul importului. Dacă solutioncomponents.yml omite căile de dependență necesare , cum ar fi folderele de entități părinte sau definițiile de relații de sub entityrelationships/ - pachetele de soluții fără eroare, dar nu reușește importul cu un mesaj, cum ar fi: "Atributele lipsesc definiții de relație asociate". Asigurați-vă întotdeauna că solutioncomponents.yml include toate entitățile și relațiile dependente, nu doar pe cele deținute de soluție.
missingdependencies.yml
Situat la solutions/<SolutionUniqueName>/missingdependencies.yml. Înregistrează dependențele de soluții care nu au fost prezente la ultima exportare a soluției. Utilizat în scopuri informative și pentru a valida finalizarea importului.
publisher.yml
Situat la publishers/<PublisherUniqueName>/publisher.yml. Conține definiția editorului - nume unic, nume afișat, prefix de particularizare și prefix valoare opțiune.
Structură minimă necesară:
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 pentru tipul componentei
Următorul tabel listează modul în care este gestionat fiecare tip de componentă în formatul YAML.
| Tip de componentă | În format YAML | Note |
|---|---|---|
| Entități (tabele), atribute, formulare, vizualizări | ✓ fișiere YAML | Stocate ca fișiere YAML individuale per subcomponent |
| Fluxuri de lucru (clasic) | ✓ fișiere YAML | Sub workflows/ |
| Fluxuri moderne (fluxuri în cloud Power Automate) | ✓ - numai formatul YAML | Sub modernflows/; neacceptat în format XML |
| Aplicațiile create pe planșă | ✓ - numai formatul YAML |
.msapp binar sub canvasapps/<name>/; neacceptat în format XML |
| Definiții variabile de mediu | ✓ fișiere XML | Fișiere individuale .xml sub environmentvariabledefinitions/ |
| Valori variabile de mediu | ✓ Fișier JSON | Stocat ca environment_variable_values.json |
| Conectorii particularizați | ✓ | Sub connectors/ |
| Asamblări insert | ✓ | Numele tipurilor complet calificate sunt remapped în mod implicit (/remapPluginTypeNames) |
| Resurse web | ✓ | Sub webresources/ |
| Roluri de securitate | ✓ | Stocat intern ca XML; filtrat per soluție |
| Seturi de opțiuni (global) | ✓ | Stocat ca XML; filtrat per soluție |
| Tablouri de bord | ✓ | Stocat ca XML; filtrat per soluție |
| Hărți de site | ✓ | Stocat ca XML; filtrat per soluție |
| Particularizări ale panglicii | ✓ | Stocat ca XML; filtrat per soluție |
| Relații entități | ✓ | Sub entityrelationships/ |
Notă
Componentele stocate intern ca XML se transformă automat între XML și YAML în timpul operațiunilor de împachetare și despachetare. Le puteți crea ca fișiere YAML; instrumentul gestionează conversia.
Depozite de soluții multiple
O singură rădăcină a depozitului poate conține mai multe soluții. Toate soluțiile partajează aceleași foldere de componente; solutioncomponents.yml în fiecare soluție controlează căile componente care aparțin acelei soluții.
Exemplu de structură cu două soluții:
<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/
Împachetarea unei anumite soluții dintr-un folder cu mai multe soluții
Utilizarea SolutionPackager.exe:
SolutionPackager.exe /action:Pack /zipfile:SolutionA.zip /folder:C:\repos\myrepo /SolutionName:SolutionA
Utilizarea pac solution pack (numai foldere cu o singură soluție - pentru mai multe soluții, utilizați SolutionPackager.exe direct cu /SolutionName):
pac solution pack --zipfile SolutionA.zip --folder C:\repos\myrepo
Notă
Atunci când utilizați integrarea nativă Dataverse Git cu legarea mediului, toate soluțiile din mediu partajează o singură rădăcină de depozit utilizând aspectul cu mai multe soluții. Atunci când utilizați legarea soluției, fiecare soluție poate fi legată la un folder separat.
Lucrul cu folderele de formate YAML
Împachetați un folder YAML într-un fișier .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
Obținerea unui folder YAML complet din Dataverse
Modalitatea recomandată de a obține un folder YAML complet și ambalat este să utilizați pac solution clone:
pac solution clone --name MySolutionUniqueName --outputDirectory C:\repos\myrepo
Aceasta extrage soluția în formatul YAML, inclusiv toate fișierele sursă ale componentelor. Ca alternativă, utilizați integrarea Git nativă pentru a comite de la Power Apps - fișierele asumate sunt în format YAML și complet ambalate.
Verificați folderul înainte de ambalare
Verificați dacă solutions/<name>/ folderul există și că toate căile din solutioncomponents.yml fișier sunt rezolvate. Orice căi lipsă au ca rezultat avertismente în timpul pachetului și aceste componente sunt omise.
Relația cu integrarea Dataverse Git
Formatul de control sursă YAML este formatul canonic utilizat de integrarea Dataverse Git. Atunci când makers comite soluții din Power Apps, fișierele scrise în Azure DevOps utilizați acest format. Dezvoltatorii cu prenume de cod pot lucra cu același depozit utilizând instrumentele CLI descrise aici.
Pentru informații despre conectarea mediilor la Git, consultați Configurarea integrării Dataverse Git.