Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
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 clonekullanarakpac 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.