Nota
Capaian ke halaman ini memerlukan kebenaran. Anda boleh cuba mendaftar masuk atau menukar direktori.
Capaian ke halaman ini memerlukan kebenaran. Anda boleh cuba menukar direktori.
Artikel ini ialah rujukan untuk format kawalan sumber berasaskan YAML yang digunakan apabila anda:
- Komitkan penyelesaian menggunakan penyepaduan Git Dataverse asli dalam Power Apps.
- Ekstrak larutan menggunakan
pac solution cloneataupac solution sync. - Jalankan SolutionPackager secara manual terhadap folder yang mengandungi fail manifes YAML.
Format YAML berbeza daripada susun atur XML klasik. Memahami struktur adalah penting apabila anda mahu membungkus semula folder YAML secara manual ke dalam .zip fail yang boleh diimport oleh Dataverse.
Penting
Sokongan format kawalan sumber YAML dalam CLI pac memerlukan Microsoft. PowerApps.CLI versi 2.4.1 atau lebih baru. Muat turun versi terkini daripada NuGet atau kemas kini melalui pac install latest. SolutionPackager.exe, yang dihantar dengan pakej NuGet, menyokong format YAML daripada versi yang sama.
Gambaran keseluruhan struktur folder
Akar repositori format YAML mengandungi direktori peringkat teratas berikut:
<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]/
Direktori solutions/ dan publishers/ diperlukan. Semua folder komponen pada akar adalah pilihan dan bergantung pada apa yang terkandung dalam penyelesaian.
Penting
Semua fail manifes YAML (solution.yml, publisher.yml, dan sebagainya) mesti diletakkan di bawah subdirektori masing-masing (solutions/<name>/, publishers/<name>/). Meletakkannya pada akar repositori menghalang pengesanan format dan menyebabkan alat SolutionPackager kembali kepada format XML — menghasilkan ralat yang mengelirukan Customizations.xmltentang . Maklumat lanjut: Penyelesaian masalah alat SolutionPackager
Format pengesanan automatik
SolutionPackager (dan pac solution pack) mengesan format secara automatik seperti berikut:
| Syarat | Format yang dikesan | Tingkah Laku |
|---|---|---|
solutions/*/solution.yml dijumpai — satu penyelesaian |
YAML | Nama penyelesaian disimpulkan daripada nama subfolder |
solutions/*/solution.yml dijumpai — pelbagai penyelesaian |
YAML |
/SolutionName hujah yang diperlukan untuk menentukan penyelesaian yang hendak dibungkus |
Tiada solutions/ subdirektori hadir |
XML (warisan) | Menjangkakan Other\Solution.xml dan Other\Customizations.xml |
Fail yang nyata
solution.yml
Terletak di solutions/<SolutionUniqueName>/solution.yml. Mengandungi metadata penyelesaian peringkat teratas — setara solution.xml YAML dalam format XML.
Medan utama termasuk nama unik penyelesaian, versi, nama mesra, perihalan dan rujukan kepada penerbit.
solutioncomponents.yml
Terletak di solutions/<SolutionUniqueName>/solutioncomponents.yml. Menyenaraikan laluan relatif kepada semua fail komponen yang disertakan dalam penyelesaian ini. SolutionPackager membaca fail ini semasa pek untuk mencari sumber komponen.
Contoh petikan:
- Path: entities/account
- Path: entities/contact
- Path: canvasapps/myapp_<guid>
- Path: publishers/MyPublisher
rootcomponents.yml
Terletak di solutions/<SolutionUniqueName>/rootcomponents.yml. Menyenaraikan komponen peringkat akar (biasanya jadual dan objek peringkat atas lain) yang tergolong dalam penyelesaian ini.
Nota
Jika komponen diisytiharkan dalam rootcomponents.yml tetapi fail sumbernya tiada daripada folder (contohnya, fail aplikasi .msapp kanvas di bawah canvasapps/<name>/), SolutionPackager mengeluarkan amaran dan menghilangkan komponen tersebut daripada .zip. Operasi pek masih berjaya diselesaikan dengan kod keluar 0.
Kejayaan pek tidak menjamin kejayaan import. Jika solutioncomponents.yml meninggalkan laluan kebergantungan yang diperlukan — seperti folder entiti induk atau takrifan perhubungan di bawah entityrelationships/ — penyelesaian dibungkus tanpa ralat tetapi gagal semasa import dengan mesej seperti: "Atribut tidak mempunyai takrifan perhubungan yang berkaitan." Sentiasa pastikan solutioncomponents.yml termasuk semua entiti dan perhubungan yang bergantung, bukan hanya yang dimiliki penyelesaian.
missingdependencies.yml
Terletak di solutions/<SolutionUniqueName>/missingdependencies.yml. Merekodkan sebarang kebergantungan penyelesaian yang tidak hadir semasa penyelesaian kali terakhir dieksport. Digunakan untuk tujuan maklumat dan untuk mengesahkan kesempurnaan import.
publisher.yml
Terletak di publishers/<PublisherUniqueName>/publisher.yml. Mengandungi takrifan penerbit — nama unik, nama paparan, awalan penyesuaian dan awalan nilai opsyen.
Struktur minimum yang diperlukan:
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:
Sokongan jenis komponen
Jadual berikut menyenaraikan cara setiap jenis komponen dikendalikan dalam format YAML.
| Jenis komponen | Dalam format YAML | Nota |
|---|---|---|
| Entiti (jadual), atribut, borang, pandangan | ✓ Fail YAML | Disimpan sebagai fail YAML individu bagi setiap subkomponen |
| Aliran kerja (klasik) | ✓ Fail YAML | Di bawah workflows/ |
| Aliran moden (aliran awan Power Automate) | ✓ — Format YAML sahaja | Di bawah modernflows/; tidak disokong dalam format XML |
| Aplikasi kanvas | ✓ — Format YAML sahaja |
.msapp binari di bawah canvasapps/<name>/; tidak disokong dalam format XML |
| Takrifan pembolehubah persekitaran | ✓ Fail XML | Fail individu .xml di bawah environmentvariabledefinitions/ |
| Nilai pembolehubah persekitaran | ✓ Fail JSON | Disimpan sebagai environment_variable_values.json |
| Penyambung tersuai | ✓ | Di bawah connectors/ |
| Perhimpunan pemalam | ✓ | Nama jenis yang layak sepenuhnya dipetakan semula secara lalai (/remapPluginTypeNames) |
| Sumber web | ✓ | Di bawah webresources/ |
| Peranan keselamatan | ✓ | Disimpan sebagai XML secara dalaman; ditapis setiap larutan |
| Set opsyen (global) | ✓ | Disimpan sebagai XML; ditapis setiap larutan |
| Papan pemuka | ✓ | Disimpan sebagai XML; ditapis setiap larutan |
| Peta tapak | ✓ | Disimpan sebagai XML; ditapis setiap larutan |
| Penyesuaian reben | ✓ | Disimpan sebagai XML; ditapis setiap larutan |
| Perhubungan entiti | ✓ | Di bawah entityrelationships/ |
Nota
Komponen yang disimpan sebagai XML secara dalaman ditukar secara automatik antara XML dan YAML semasa operasi pek dan pembongkaran. Anda boleh mengarangnya sebagai fail YAML; Alat ini mengendalikan penukaran.
Repositori berbilang penyelesaian
Satu akar repositori boleh mengandungi berbilang penyelesaian. Semua penyelesaian berkongsi folder komponen yang sama; solutioncomponents.yml dalam setiap penyelesaian mengawal laluan komponen yang tergolong dalam penyelesaian tersebut.
Contoh struktur dengan dua penyelesaian:
<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/
Membungkus penyelesaian tertentu daripada folder berbilang penyelesaian
Menggunakan SolutionPackager.exe:
SolutionPackager.exe /action:Pack /zipfile:SolutionA.zip /folder:C:\repos\myrepo /SolutionName:SolutionA
Menggunakan pac solution pack (folder penyelesaian tunggal sahaja — untuk berbilang penyelesaian, gunakan SolutionPackager.exe terus dengan /SolutionName):
pac solution pack --zipfile SolutionA.zip --folder C:\repos\myrepo
Nota
Apabila menggunakan penyepaduan Dataverse Git asli dengan pengikatan persekitaran, semua penyelesaian dalam persekitaran berkongsi satu akar repositori menggunakan reka letak berbilang penyelesaian. Apabila menggunakan pengikatan penyelesaian, setiap penyelesaian boleh terikat ke folder yang berasingan.
Bekerja dengan folder format YAML
Bungkus folder YAML ke dalam fail .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
Dapatkan folder YAML lengkap daripada Dataverse
Cara yang disyorkan untuk mendapatkan folder YAML yang lengkap dan boleh dibungkus ialah menggunakan pac solution clone:
pac solution clone --name MySolutionUniqueName --outputDirectory C:\repos\myrepo
Ini mengekstrak penyelesaian ke dalam format YAML, termasuk semua fail sumber komponen. Sebagai alternatif, gunakan penyepaduan Git asli untuk melakukan komit daripada Power Apps — fail yang komited berada dalam format YAML dan boleh dibungkus sepenuhnya.
Sahkan folder sebelum mengemas
Semak sama ada folder wujud solutions/<name>/ dan semua laluan diselesaikan solutioncomponents.yml kepada fail sebenar. Sebarang laluan yang hilang mengakibatkan amaran semasa pek dan komponen tersebut ditinggalkan.
Perhubungan dengan penyepaduan Git Dataverse
Format kawalan sumber YAML ialah format kanonik yang digunakan oleh penyepaduan Git Dataverse. Apabila pembuat melakukan penyelesaian daripada Power Apps, fail yang ditulis ke Azure DevOps menggunakan format ini. Pembangun mengutamakan kod boleh bekerja dengan repositori yang sama menggunakan alat CLI yang diterangkan di sini.
Untuk maklumat tentang menyambungkan persekitaran ke Git, lihat Persediaan penyepaduan Git Dataverse.