Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Den här artikeln är en referens för det YAML-baserade källkontrollformatet som används när du:
- Genomför lösningar med inbyggd Dataverse Git-integrering i Power Apps.
- Extrahera lösningar med eller
pac solution clonepac solution sync. - Kör SolutionPackager manuellt mot en mapp som innehåller YAML-manifestfiler.
YAML-formatet skiljer sig från den klassiska XML-layouten. Det är viktigt att förstå strukturen när du vill packa en YAML-mapp manuellt tillbaka till en .zip fil som Dataverse kan importera.
Important
Stöd för YAML-källkontrollformat i pac CLI kräver Microsoft. PowerApps.CLI version 2.4.1 eller senare. Ladda ned den senaste versionen från NuGet eller uppdatera via pac install latest. SolutionPackager.exe, som levereras med NuGet-paketet, stöder YAML-formatet från samma version.
Översikt över mappstruktur
En YAML-format lagringsplatsrot innehåller följande kataloger på den översta nivån:
<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]/
Katalogerna solutions/ och publishers/ krävs. Alla komponentmappar i roten är valfria och beror på vad lösningen innehåller.
Important
Alla YAML-manifestfiler (solution.yml, publisher.ymloch så vidare) måste placeras under respektive underkatalog (solutions/<name>/, publishers/<name>/). Att placera dem på lagringsplatsens rot förhindrar formatidentifiering och gör att SolutionPackager-verktyget återgår till XML-formatet , vilket ger ett missvisande fel om en saknad Customizations.xml. Mer information: Felsökning av SolutionPackager-verktyget
Formatera automatisk identifiering
SolutionPackager (och pac solution pack) identifierar formatet automatiskt enligt följande:
| Villkor | Identifierat format | Beteende |
|---|---|---|
solutions/*/solution.yml found – en lösning |
YAML | Lösningsnamnet som härleds från undermappens namn |
solutions/*/solution.yml hittades – flera lösningar |
YAML |
/SolutionName argument som krävs för att ange vilken lösning som ska packas |
Ingen underkatalog solutions/ finns |
XML (äldre) | Förväntar sig Other\Solution.xml och Other\Customizations.xml |
Manifestfiler
solution.yml
Finns på solutions/<SolutionUniqueName>/solution.yml. Innehåller lösningsmetadata på den översta nivån – YAML-motsvarigheten solution.xml till i XML-format.
Nyckelfälten innehåller lösningens unika namn, version, eget namn, beskrivning och en referens till utgivaren.
solutioncomponents.yml
Finns på solutions/<SolutionUniqueName>/solutioncomponents.yml. Visar relativa sökvägar till alla komponentfiler som ingår i den här lösningen. SolutionPackager läser den här filen under paketet för att hitta komponentkällor.
Exempelutdrag:
- Path: entities/account
- Path: entities/contact
- Path: canvasapps/myapp_<guid>
- Path: publishers/MyPublisher
rootcomponents.yml
Finns på solutions/<SolutionUniqueName>/rootcomponents.yml. Visar de rotnivåkomponenter (vanligtvis tabeller och andra objekt på den översta nivån) som tillhör den här lösningen.
Anmärkning
Om en komponent deklareras i rootcomponents.yml men dess källfiler saknas i mappen (till exempel en appfil .msapp för arbetsytor under canvasapps/<name>/) genererar SolutionPackager en varning och utelämnar komponenten från den packade .zip. Paketåtgärden slutförs fortfarande med slutkod 0.
Paketframgång garanterar inte att importen lyckas. Om solutioncomponents.yml utelämnar nödvändiga beroendesökvägar, till exempel överordnade entitetsmappar eller relationsdefinitioner under entityrelationships/ , paketen utan fel men misslyckas vid import med ett meddelande som: "Attribut saknar associerade relationsdefinitioner." Se alltid till att solutioncomponents.yml innehåller alla beroende entiteter och relationer, inte bara de lösningsägda.
missingdependencies.yml
Finns på solutions/<SolutionUniqueName>/missingdependencies.yml. Registrerar eventuella lösningsberoenden som inte fanns när lösningen senast exporterades. Används i informationssyfte och för att verifiera fullständighet vid import.
publisher.yml
Finns på publishers/<PublisherUniqueName>/publisher.yml. Innehåller utgivarens definition – unikt namn, visningsnamn, anpassningsprefix och alternativvärdeprefix.
Minimal struktur som krävs:
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:
Stöd för komponenttyp
I följande tabell visas hur varje komponenttyp hanteras i YAML-format.
| Komponenttyp | I YAML-format | Notes |
|---|---|---|
| Entiteter (tabeller), attribut, formulär, vyer | √ YAML-filer | Lagras som enskilda YAML-filer per underkomponent |
| Arbetsflöden (klassisk) | √ YAML-filer | Under workflows/ |
| Moderna flöden (Power Automate molnflöden) | √ – ENDAST YAML-format | Under modernflows/; stöds inte i XML-format |
| Canvas-appar | √ – ENDAST YAML-format |
.msapp binär under canvasapps/<name>/; stöds inte i XML-format |
| Miljövariabeldefinitioner | √ XML-filer | Enskilda .xml filer under environmentvariabledefinitions/ |
| Miljövariabelvärden | √ JSON-fil | Lagras som environment_variable_values.json |
| Anpassade kopplingar | ✓ | Under connectors/ |
| Plugin-sammansättningar | ✓ | Fullständigt kvalificerade typnamn ommappade som standard (/remapPluginTypeNames) |
| Webbresurser | ✓ | Under webresources/ |
| Säkerhetsroller | ✓ | Lagras som XML internt; filtrerat per lösning |
| Alternativuppsättningar (globala) | ✓ | Lagrad som XML; filtrerat per lösning |
| Dashboards | ✓ | Lagrad som XML; filtrerat per lösning |
| Webbplatskartor | ✓ | Lagrad som XML; filtrerat per lösning |
| Anpassningar av menyfliksområdet | ✓ | Lagrad som XML; filtrerat per lösning |
| Entitetsrelationer | ✓ | Under entityrelationships/ |
Anmärkning
Komponenter som lagras som XML internt konverteras automatiskt mellan XML och YAML under pack- och uppackningsåtgärder. Du kan skapa dem som YAML-filer; verktyget hanterar konverteringen.
Lagringsplatser för flera lösningar
En enskild lagringsplatsrot kan innehålla flera lösningar. Alla lösningar delar samma komponentmappar. solutioncomponents.yml i varje lösning styr vilka komponentsökvägar som tillhör den lösningen.
Exempelstruktur med två lösningar:
<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/
Packa en specifik lösning från en mapp med flera lösningar
Använda SolutionPackager.exe:
SolutionPackager.exe /action:Pack /zipfile:SolutionA.zip /folder:C:\repos\myrepo /SolutionName:SolutionA
Använd pac solution pack (endast mappar med en lösning – för flera lösningar använder du SolutionPackager.exe direkt med /SolutionName):
pac solution pack --zipfile SolutionA.zip --folder C:\repos\myrepo
Anmärkning
När du använder inbyggd Dataverse Git-integrering med miljöbindning delar alla lösningar i miljön en enda lagringsplatsrot med hjälp av layouten för flera lösningar. När du använder lösningsbindning kan varje lösning bindas till en separat mapp.
Arbeta med YAML-formatmappar
Packa en YAML-mapp i en .zip fil
# 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
Hämta en fullständig YAML-mapp från Dataverse
Det rekommenderade sättet att få en fullständig, packbar YAML-mapp är att använda pac solution clone:
pac solution clone --name MySolutionUniqueName --outputDirectory C:\repos\myrepo
Detta extraherar lösningen i YAML-format, inklusive alla komponentkällfiler. Du kan också använda inbyggd Git-integrering för att checka in från Power Apps – de incheckade filerna är i YAML-format och helt packbara.
Kontrollera mappen innan du packar
Kontrollera att solutions/<name>/ mappen finns och att alla sökvägar i solutioncomponents.yml matchar faktiska filer. Eventuella sökvägar som saknas resulterar i varningar under paketet och dessa komponenter utelämnas.
Relation till Dataverse Git-integrering
YAML-källkontrollformatet är det kanoniska format som används av Dataverse Git-integrering. När skaparna genomför lösningar från Power Apps använder filerna som skrivits till Azure DevOps det här formatet. Kodutvecklare kan arbeta med samma lagringsplats med hjälp av CLI-verktygen som beskrivs här.
Information om hur du ansluter miljöer till Git finns i Konfiguration av Git-integrering i Dataverse.