Çözüm YAML kaynak denetimi biçim başvurusu

Bu makale, aşağıdaki durumlarda kullanılan YAML tabanlı kaynak denetimi biçimine yönelik bir başvurudur:

  • Power Apps'da yerel Dataverse Git tümleştirmesi kullanarak çözümleri işleyin.
  • veya pac solution clonekullanarak pac solution sync çözümleri ayıklayın.
  • SolutionPackager'ı YAML bildirim dosyalarını içeren bir klasörde el ile çalıştırın.

YAML biçimi klasik XML düzeninden farklıdır. Bir YAML klasörünü Dataverse'in içeri aktarabileceği bir .zip dosyaya el ile paketlemek istediğinizde yapıyı anlamak önemlidir.

Important

pac CLI'de YAML kaynak denetimi biçimi desteği Microsoft gerektirir. PowerApps.CLI sürüm 2.4.1 veya üzeri. NuGet adresinden en son sürümü indirin veya pac install latest aracılığıyla güncelleştirin. NuGet paketiyle birlikte gelen SolutionPackager.exe, aynı sürümden YAML biçimini destekler.

Klasör yapısına genel bakış

YAML biçimli bir depo kökü aşağıdaki üst düzey dizinleri içerir:

<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]/

solutions/ ve publishers/ dizinleri gereklidir. Kökte bulunan tüm bileşen klasörleri isteğe bağlıdır ve çözümün içeriğine bağlıdır.

Important

Tüm YAML bildirim dosyaları (solution.yml, publisher.ymlvb.) ilgili alt dizinlerine (solutions/<name>/, publishers/<name>/) yerleştirilmelidir. Bunları depo köküne yerleştirmek, biçim algılamasını önler ve SolutionPackager aracının XML biçimine geri dönmesine neden olur ve eksik Customizations.xmlhakkında yanıltıcı bir hata oluşturur. Daha fazla bilgi: SolutionPackager aracı sorunlarını giderme

Otomatik algılamayı biçimlendirme

SolutionPackager (ve pac solution pack) biçimi aşağıdaki gibi otomatik olarak algılar:

Condition Algılanan biçim Davranış
solutions/*/solution.yml bulundu — bir çözüm YAML Çözüm adı alt klasör adından çıkarılır
solutions/*/solution.yml bulundu — birden çok çözüm YAML /SolutionName hangi çözümün paketleneceğini belirtmek için gereken bağımsız değişken
Alt dizin mevcut değil solutions/ XML (eski) Ve'i Other\Solution.xml bekler Other\Customizations.xml

Bildirim dosyaları

solution.yml

konumunda solutions/<SolutionUniqueName>/solution.ymlbulunur. XML biçimindeki YAML eşdeğeri solution.xml olan en üst düzey çözüm meta verilerini içerir.

Temel alanlar çözümün benzersiz adını, sürümünü, kolay adını, açıklamasını ve yayımcıya başvuruyu içerir.

solutioncomponents.yml

konumunda solutions/<SolutionUniqueName>/solutioncomponents.ymlbulunur. Bu çözüme dahil edilen tüm bileşen dosyalarının göreli yollarını listeler. SolutionPackager, bileşen kaynaklarını bulmak için paket sırasında bu dosyayı okur.

Örnek alıntı:

- Path: entities/account
- Path: entities/contact
- Path: canvasapps/myapp_<guid>
- Path: publishers/MyPublisher

rootcomponents.yml

konumunda solutions/<SolutionUniqueName>/rootcomponents.ymlbulunur. Bu çözüme ait kök düzeyi bileşenleri (genellikle tablolar ve diğer üst düzey nesneler) listeler.

Note

Bir bileşen içinde rootcomponents.yml bildirilirse ancak kaynak dosyaları klasöründe yoksa (örneğin, altında .msappbir tuval uygulaması canvasapps/<name>/ dosyası), SolutionPackager bir uyarı yayar ve bu bileşeni paketlenmiş .zipöğesinden atlar. Paket işlemi hala çıkış kodu 0 ile başarıyla tamamlar.

Paket başarısı içeri aktarma başarıyı garanti etmez. solutioncomponents.yml Üst varlık klasörleri veya altındaki entityrelationships/ ilişki tanımları gibi gerekli bağımlılık yollarını atlarsa, çözüm paketleri hatasızdır ancak içeri aktarma işleminde şu iletiyle başarısız olur: "Öznitelikler ilişkili ilişki tanımları eksik." Yalnızca çözüme ait varlıkları değil, her zaman tüm bağımlı varlıkları ve ilişkileri içerdiğinden emin olunsolutioncomponents.yml.

missingdependencies.yml

konumunda solutions/<SolutionUniqueName>/missingdependencies.ymlbulunur. Çözüm en son dışarı aktarıldığında mevcut olmayan çözüm bağımlılıklarını kaydeder. Bilgilendirme amacıyla ve içeri aktarmada eksiksizliği doğrulamak için kullanılır.

publisher.yml

konumunda publishers/<PublisherUniqueName>/publisher.ymlbulunur. Yayımcı tanımını içerir; benzersiz ad, görünen ad, özelleştirme ön eki ve seçenek değeri ön eki.

En az gerekli yapı:

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:

Bileşen türü desteği

Aşağıdaki tabloda, her bileşen türünün YAML biçiminde nasıl işleneceğini listelenmiştir.

Bileşen türü YAML biçiminde Notlar
Varlıklar (tablolar), öznitelikler, formlar, görünümler ✓ YAML dosyaları Alt bileşen başına tek tek YAML dosyaları olarak depolanır
İş akışları (klasik) ✓ YAML dosyaları Altında workflows/
Modern akışlar (Power Automate bulut akışları) ✓ — yalnızca YAML biçimi altında modernflows/; XML biçiminde desteklenmez
Kanvas uygulamaları ✓ — yalnızca YAML biçimi .msapp altındaki canvasapps/<name>/ikili dosya; XML biçiminde desteklenmez
Ortam değişkeni tanımları ✓ XML dosyaları Altındaki tek tek .xml dosyalar environmentvariabledefinitions/
Ortam değişkeni değerleri ✓ JSON dosyası Farklı depolanır environment_variable_values.json
Özel bağlayıcılar Altında connectors/
Eklenti derlemeleri Varsayılan olarak yeniden eşlenen tam tür adları (/remapPluginTypeNames)
Web kaynakları Altında webresources/
Güvenlik rolleri Dahili olarak XML olarak depolanır; çözüm başına filtrelenmiş
Seçenek kümeleri (genel) XML olarak depolanır; çözüm başına filtrelenmiş
Dashboards XML olarak depolanır; çözüm başına filtrelenmiş
Site haritaları XML olarak depolanır; çözüm başına filtrelenmiş
Şerit özelleştirmeleri XML olarak depolanır; çözüm başına filtrelenmiş
Varlık ilişkileri Altında entityrelationships/

Note

Dahili olarak XML olarak depolanan bileşenler, paket ve paket açma işlemleri sırasında XML ve YAML arasında otomatik olarak dönüştürülür. Bunları YAML dosyaları olarak yazabilirsiniz; araç dönüştürmeyi işler.

Çok çözümlü depolar

Tek bir depo kökü birden çok çözüm içerebilir. Tüm çözümler aynı bileşen klasörlerini paylaşır; solutioncomponents.yml her çözümde hangi bileşen yollarının bu çözüme ait olduğunu denetler.

İki çözümü olan örnek yapı:

<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/

Çok çözümlü bir klasörden belirli bir çözümü paketleme

SolutionPackager.exekullanma:

SolutionPackager.exe /action:Pack /zipfile:SolutionA.zip /folder:C:\repos\myrepo /SolutionName:SolutionA

Kullanarak pac solution pack (yalnızca tek çözümlü klasörler — çoklu çözüm için doğrudan ile /SolutionNameSolutionPackager.exe kullanın):

pac solution pack --zipfile SolutionA.zip --folder C:\repos\myrepo

Note

Ortam bağlama ile yerel Dataverse Git tümleştirmesi kullanılırken, ortamdaki tüm çözümler çoklu çözüm düzenini kullanarak tek bir depo kökünü paylaşır. Çözüm bağlama kullanılırken, her çözüm ayrı bir klasöre bağlanabilir.

YAML biçim klasörleriyle çalışma

YAML klasörünü .zip dosyasına paketleme

# 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

Dataverse'den tam bir YAML klasörü alma

Eksiksiz, paketlenebilir bir YAML klasörü edinmenin önerilen yolu kullanmaktır pac solution clone:

pac solution clone --name MySolutionUniqueName --outputDirectory C:\repos\myrepo

Bu, çözümü tüm bileşen kaynak dosyaları da dahil olmak üzere YAML biçiminde ayıklar. Alternatif olarak, Power Apps'den işleme yapmak için yerel Git tümleştirmesini kullanın; işlenen dosyalar YAML biçimindedir ve tamamen paketlenebilir.

Paketlemeden önce klasörü doğrulama

Klasörün mevcut olup olmadığını solutions/<name>/ ve içindeki solutioncomponents.yml tüm yolların gerçek dosyalara çözümlenip çözümlen olmadığını denetleyin. Eksik yollar paket sırasında uyarılarla sonuçlanır ve bu bileşenler atlanır.

Dataverse Git tümleştirmesi ile ilişki

YAML kaynak denetimi biçimi, Dataverse Git tümleştirmesi tarafından kullanılan kurallı biçimdir. Oluşturucular Power Apps'dan çözümler işlerken, Azure DevOps yazılan dosyalar bu biçimi kullanır. Kod öncelikli geliştiriciler, burada açıklanan CLI araçlarını kullanarak aynı depoyla çalışabilir.

Ortamları Git'e bağlama hakkında bilgi için bkz. Dataverse Git tümleştirme kurulumu.