Penyelesaian rujukan format kawalan sumber YAML

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 clone atau pac 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.