Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Dit artikel is een verwijzing naar de op YAML gebaseerde indeling voor broncodebeheer die wordt gebruikt wanneer u:
- Oplossingen doorvoeren met systeemeigen Dataverse Git-integratie in Power Apps.
- Oplossingen extraheren met of
pac solution clonepac solution sync. - Voer SolutionPackager handmatig uit op een map die YAML-manifestbestanden bevat.
De YAML-indeling verschilt van de klassieke XML-indeling. Inzicht in de structuur is belangrijk wanneer u een YAML-map handmatig wilt inpakken in een .zip bestand dat Dataverse kan importeren.
Belangrijk
Ondersteuning voor YAML-broncodebeheerindeling in de pac CLI vereist Microsoft. PowerApps.CLI versie 2.4.1 of hoger. Download de nieuwste versie van NuGet of update via pac install latest. SolutionPackager.exe, die wordt geleverd met het NuGet-pakket, ondersteunt de YAML-indeling van dezelfde versie.
Overzicht van mapstructuur
De hoofdmap van een YAML-indeling bevat de volgende mappen op het hoogste niveau:
<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]/
De solutions/ en publishers/ directory's zijn vereist. Alle onderdeelmappen in de hoofdmap zijn optioneel en zijn afhankelijk van wat de oplossing bevat.
Belangrijk
Alle YAML-manifestbestanden (solution.yml, publisher.ymlenzovoort) moeten worden geplaatst onder hun respectieve submappen (solutions/<name>/, publishers/<name>/). Als u ze in de hoofdmap van de opslagplaats plaatst, voorkomt u opmaakdetectie en zorgt u ervoor dat het hulpprogramma SolutionPackager terugvalt op de XML-indeling, waardoor een misleidende fout over een ontbrekende Customizations.xmlfout wordt gegenereerd. Meer informatie: Probleemoplossing voor SolutionPackager-hulpprogramma
Automatische detectie opmaken
SolutionPackager (en pac solution pack) detecteert de indeling als volgt:
| Conditie | Gedetecteerde indeling | Gedrag |
|---|---|---|
solutions/*/solution.yml gevonden — één oplossing |
YAML | Oplossingsnaam afgeleid van de naam van de submap |
solutions/*/solution.yml gevonden — meerdere oplossingen |
YAML |
/SolutionName argument vereist om op te geven welke oplossing moet worden verpakt |
Geen solutions/ submap aanwezig |
XML (verouderd) |
Other\Solution.xml Verwacht enOther\Customizations.xml |
Manifestbestanden
solution.yml
Gelegen op solutions/<SolutionUniqueName>/solution.yml. Bevat metagegevens van oplossingen op het hoogste niveau: het YAML-equivalent van solution.xml in de XML-indeling.
Sleutelvelden bevatten de unieke naam, versie, beschrijvende naam, beschrijving van de oplossing en een verwijzing naar de uitgever.
solutioncomponents.yml
Gelegen op solutions/<SolutionUniqueName>/solutioncomponents.yml. Toont relatieve paden naar alle onderdeelbestanden die in deze oplossing zijn opgenomen. SolutionPackager leest dit bestand tijdens het pakket om onderdeelbronnen te vinden.
Voorbeeldfragment:
- Path: entities/account
- Path: entities/contact
- Path: canvasapps/myapp_<guid>
- Path: publishers/MyPublisher
rootcomponents.yml
Gelegen op solutions/<SolutionUniqueName>/rootcomponents.yml. Geeft een lijst weer van de hoofdonderdelen (meestal tabellen en andere objecten op het hoogste niveau) die bij deze oplossing horen.
Opmerking
Als een onderdeel is gedeclareerd in rootcomponents.yml maar de bronbestanden ontbreken uit de map (bijvoorbeeld een canvas-app-bestand .msapp onder canvasapps/<name>/), verzendt SolutionPackager een waarschuwing en laat dat onderdeel weg uit het verpakte .ziponderdeel. De packbewerking wordt nog steeds voltooid met afsluitcode 0.
Het succes van het pakket garandeert geen succes bij importeren. Als solutioncomponents.yml vereiste afhankelijkheidspaden, zoals bovenliggende entiteitsmappen of relatiedefinities, weglaat, worden de oplossingspakketten entityrelationships/ zonder fouten verpakt, maar mislukt bij het importeren met een bericht als: 'Kenmerken ontbreken gekoppelde relatiedefinities'. Zorg er altijd voor dat solutioncomponents.yml alle afhankelijke entiteiten en relaties zijn opgenomen, niet alleen de oplossingen die eigendom zijn van de oplossing.
missingdependencies.yml
Gelegen op solutions/<SolutionUniqueName>/missingdependencies.yml. Registreert eventuele oplossingsafhankelijkheden die niet aanwezig waren toen de oplossing voor het laatst werd geëxporteerd. Wordt gebruikt voor informatieve doeleinden en om de volledigheid bij het importeren te valideren.
publisher.yml
Gelegen op publishers/<PublisherUniqueName>/publisher.yml. Bevat de definitie van de uitgever: unieke naam, weergavenaam, aanpassingsvoorvoegsel en waardevoorvoegsel voor opties.
Minimale vereiste structuur:
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:
Ondersteuning voor onderdeeltype
De volgende tabel geeft aan hoe elk onderdeeltype wordt verwerkt in de YAML-indeling.
| Onderdeeltype | In YAML-indeling | Notes |
|---|---|---|
| Entiteiten (tabellen), kenmerken, formulieren, weergaven | ✓ YAML-bestanden | Opgeslagen als afzonderlijke YAML-bestanden per subcomponent |
| Werkstromen (klassiek) | ✓ YAML-bestanden | Onder workflows/ |
| Moderne stromen (Power Automate cloudstromen) | ✓ — ALLEEN YAML-indeling | Onder modernflows/; niet ondersteund in XML-indeling |
| Canvas-apps | ✓ — ALLEEN YAML-indeling |
.msapp binair onder canvasapps/<name>/; niet ondersteund in XML-indeling |
| Definities van omgevingsvariabelen | ✓ XML-bestanden | Afzonderlijke .xml bestanden onder environmentvariabledefinitions/ |
| Waarden voor omgevingsvariabelen | ✓ JSON-bestand | Opgeslagen als environment_variable_values.json |
| Aangepaste connectoren | ✓ | Onder connectors/ |
| Invoegtoepassingsassembly's | ✓ | Volledig gekwalificeerde typenamen die standaard opnieuw zijn toegewezen (/remapPluginTypeNames) |
| Webresources | ✓ | Onder webresources/ |
| Beveiligingsrollen | ✓ | Intern opgeslagen als XML; gefilterd per oplossing |
| Optiesets (globaal) | ✓ | Opgeslagen als XML; gefilterd per oplossing |
| Dashboards | ✓ | Opgeslagen als XML; gefilterd per oplossing |
| Siteoverzichten | ✓ | Opgeslagen als XML; gefilterd per oplossing |
| Aanpassingen op het lint | ✓ | Opgeslagen als XML; gefilterd per oplossing |
| Entiteitsrelaties | ✓ | Onder entityrelationships/ |
Opmerking
Onderdelen die intern als XML zijn opgeslagen, worden automatisch geconverteerd tussen XML en YAML tijdens het inpakken en uitpakken. U kunt ze ontwerpen als YAML-bestanden; het hulpprogramma verwerkt de conversie.
Opslagplaatsen met meerdere oplossingen
Een hoofdmap van één opslagplaats kan meerdere oplossingen bevatten. Alle oplossingen delen dezelfde onderdeelmappen; solutioncomponents.yml in elke oplossing bepaalt u welke onderdeelpaden tot die oplossing behoren.
Voorbeeldstructuur met twee oplossingen:
<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/
Een specifieke oplossing verpakken vanuit een map met meerdere oplossingen
Met behulp van SolutionPackager.exe:
SolutionPackager.exe /action:Pack /zipfile:SolutionA.zip /folder:C:\repos\myrepo /SolutionName:SolutionA
Gebruik pac solution pack (alleen mappen met één oplossing: voor meerdere oplossingen, gebruik SolutionPackager.exe rechtstreeks met /SolutionName):
pac solution pack --zipfile SolutionA.zip --folder C:\repos\myrepo
Opmerking
Wanneer u systeemeigen Dataverse Git-integratie met omgevingsbinding gebruikt, delen alle oplossingen in de omgeving één hoofdmap van de opslagplaats met behulp van de indeling voor meerdere oplossingen. Wanneer u oplossingsbinding gebruikt, kan elke oplossing worden gebonden aan een afzonderlijke map.
Werken met YAML-indelingsmappen
Een YAML-map inpakken in een .zip-bestand
# 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
Een volledige YAML-map verkrijgen uit Dataverse
De aanbevolen manier om een volledige, inpakbare YAML-map op te halen, is door het volgende te gebruiken pac solution clone:
pac solution clone --name MySolutionUniqueName --outputDirectory C:\repos\myrepo
Hiermee wordt de oplossing geëxtraheerd in de YAML-indeling, inclusief alle bronbestanden van onderdelen. U kunt ook systeemeigen Git-integratie gebruiken om door te voeren vanuit Power Apps. De vastgelegde bestanden hebben de YAML-indeling en kunnen volledig worden verpakt.
De map controleren voordat u ze inpakt
Controleer of de solutions/<name>/ map bestaat en of alle paden die worden omgezet in solutioncomponents.yml werkelijke bestanden. Ontbrekende paden resulteren in waarschuwingen tijdens het inpakken en deze onderdelen worden weggelaten.
Relatie met Dataverse Git-integratie
De YAML-broncodebeheerindeling is de canonieke indeling die wordt gebruikt door Dataverse Git-integratie. Wanneer makers oplossingen uit Power Apps doorvoeren, gebruiken de bestanden die naar Azure DevOps geschreven, deze indeling. Code-first-ontwikkelaars kunnen met dezelfde opslagplaats werken met behulp van de CLI-hulpprogramma's die hier worden beschreven.
Zie de installatie van Dataverse Git-integratie voor informatie over het verbinden van omgevingen met Git.