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.
SolutionPackager, Microsoft Dataverse sıkıştırılmış bir çözüm dosyasını birden çok XML dosyasına ve diğer dosyalara dönüştürebilen bir araçtır. Daha sonra, bu dosyaları bir kaynak denetim sistemi kullanarak kolayca yönetebilirsiniz. Aşağıdaki bölümlerde aracın nasıl çalıştırılacağı ve aracın yönetilen ve yönetilmeyen çözümlerle nasıl kullanılacağı gösterilir.
Önemli
SolutionPackager aracı, artık çözümlerin ambalajını kaldırmak ve paketlemek için önerilen bir yol değildir. SolutionPackager aracının özellikleri Power Platform CLI'sına eklenir. komutupac solution, , unpack, packve clone gibi syncSolutionPackager aracının aynı temel özelliklerini içeren birçok fiil içerir.
SolutionPackager aracını bulma
SolutionPackager aracı Microsoft.CrmSdk.CoreTools NuGet paketinin bir parçası olarak dağıtılır. Programı kurmak için aşağıdaki adımları izleyin.
- NuGet paketini indirin.
- Paket dosya adı uzantısını .nupkg'den .zip'e değiştirin.
- Sıkıştırılmış (zip) dosyasının içeriklerini ayıklayın.
<extracted-folder-name>/contents/bin/coretools klasöründe SolutionPackager.exe yürütülebilir dosyasını bulun. Programı coretools klasöründe çalıştırın veya bu klasörü YOLUNUZA ekleyin.
SolutionPackager komut satırı parametreleri
SolutionPackager, aşağıdaki tabloda belirtilen parametrelerle çağrılabilen bir komut satırı aracıdır.
| Bağımsız değişken | Tanım |
|---|---|
| /action: {Çıkart|Paketlemek} | Gerekli. Gerçekleştirilecek eylem. Eylem, bir çözüm .zip dosyasını bir klasöre ayıklamak veya bir klasörü bir .zip dosyasına paketlemek olabilir. |
| /zipfile: <dosya yolu> | Gerekli. Çözüm .zip dosyasının yolu ve adı. Ayıklama sırasında dosya mevcut ve okunur olmalıdır. Paketleme sırasında dosya değiştirilir. |
| /folder: <klasör yolu> | Gerekli. Klasörün yolu. Ayıklama sırasında bu klasör oluşturulur ve bileşen dosyalarıyla doldurulur. Paketleme sırasında, bu klasör zaten var olmalı ve önceden çıkarılmış bileşen dosyalarını içermelidir. |
| /packagetype: {Yönetilmeyen|Yönetilen|Her ikisi de} | isteğe bağlı. İşlenecek paket türü. Varsayılan değer Yönetilmeyen'dir. .zip dosyasının veya bileşen dosyalarının içinden paket türü okunabildiğinden, bu bağımsız değişken çoğu durumda atlanabilir. Hem yönetilen hem de yönetilmeyen çözüm .zip dosyalarını belirttiğinizde, bu dosyalar bulunmalı ve bir klasöre işlenerek yerleştirilmelidir. Paketleme sırasında ve "Both" değeri belirtildiğinde, yönetilen ve yönetilmeyen çözüm .zip dosyaları tek bir klasörden üretilir. Daha fazla bilgi için bu makalede daha sonra açıklanan yönetilen ve yönetilmeyen çözümlerle çalışma bölümüne bakın. |
| /allowWrite:{Evet|Hayır} | isteğe bağlı. Varsayılan değer Evet'tir. Bu bağımsız değişken yalnızca ayıklama sırasında kullanılır. /allowWrite:Hayır şeklinde belirtildiğinde araç tüm işlemleri gerçekleştirir ancak herhangi bir dosyayı yazması veya silmesi engellenir. Ayıklama işlemi, mevcut dosyaların üzerine yazılmadan veya silinmeden güvenli bir şekilde değerlendirilebilir. |
| /allowDelete:{Yes|No|Prompt} | isteğe bağlı. Varsayılan değer İstem'dir. Bu bağımsız değişken yalnızca ayıklama sırasında kullanılır. /allowDelete:Evet şeklinde belirtildiğinde /folder parametresi tarafından belirtilen klasöründeki beklenmeyen tüm dosyalar otomatik olarak silinir. /allowDelete:Hayır şeklinde belirtildiğinde herhangi bir silme eylemi gerçekleşmez. /allowDelete:İstem şeklinde belirtildiğinde kullanıcıdan konsol aracılığıyla yapılabilecek tüm silme işlemlerine onay vermesi veya bunları reddetmesi istenir. /allowWrite:Hayır şeklinde belirtildiğinde /allowDelete:Evet şeklinde belirtilmiş de olsa silme eylemi gerçekleşmez. |
| /clobber | isteğe bağlı. Bu bağımsız değişken yalnızca ayıklama sırasında kullanılır. /clobber belirtildiğinde salt okunur özniteliği ayarlanmış dosyaların üzerine yazılır veya bunlar silinir. Belirtilmediğinde salt okunur özniteliğine sahip dosyaların üzerine yazılmaz veya silinmez. |
| /errorlevel: {Off|Hata|Uyarı|Bilgi|Ayrıntılı} | isteğe bağlı. Varsayılan değer Bilgi'dir. Bu bağımsız değişken, çıktı olarak verilecek günlük bilgilerinin düzeyini gösterir. |
| /map: <dosya yolu> | isteğe bağlı. Dosya eşleme yönergeleri içeren bir .xml dosyasının yolu ve adı. Ayıklama sırasında kullanıldığında dosyalar, tipik olarak /folder parametresi tarafından belirtilen klasörün içinden değil eşleme dosyasında belirtilen alternatif konumlardan okunur. Paket işlemi sırasında, yönergelerle eşleşen dosyalar yazılmaz. |
| /nologo | isteğe bağlı. Çalışma zamanında banner'ı gizleyin. |
| /log: <dosya yolu> | isteğe bağlı. Günlük dosyasının yolu ve adı. Dosya hâlihazırda mevcutsa, yeni günlük bilgileri dosyaya eklenir. |
| <@ dosya yolu> | isteğe bağlı. Araç için komut satırı bağımsız değişkenleri içeren bir dosyanın yolu ve adı. |
| /sourceLoc: <dize> | isteğe bağlı. Bu bağımsız değişken, bir şablon kaynak dosyası oluşturur ve yalnızca ayıklama sırasında geçerlidir. Olası değerler, dışarı aktarmak istediğiniz dil için auto veya LCID/ISO kodudur. Bu bağımsız değişken kullanıldığında, belirtilen yerel ayarda yer alan dize kaynakları nötr bir .resx dosyası olarak ayrıştırılır.
auto veya yalnızca uzun ya da kısa geçiş formu belirtilirse taban yerel ayarı veya çözümü kullanılır. Komutun kısa formunu kullanabilirsiniz: /src. |
| /localize | isteğe bağlı. Tüm dize kaynaklarını .resx dosyalarına çıkarın veya birleştirin. Komutun kısa formunu kullanabilirsiniz: /loc. Yerelleştir seçeneği, .resx dosyaları için paylaşılan bileşenleri destekler. Daha fazla bilgi: RESX web kaynaklarını kullanma |
| /ÇözümAdı: <name> | isteğe bağlı. Kaynak klasör altında birden çok çözüm olduğunda paketleme veya ayıklama yapılacak çözümün benzersiz adı solutions/*/solution.yml. Birden fazla çözüm algılandığında gereklidir. Yalnızca YAML kaynak denetimi biçimi için geçerlidir. Komutun kısa biçimini kullanabilirsiniz: /sn. |
| /remapPluginTypeNames | isteğe bağlı. Belirtildiğinde, eklenti tam nitelikli tür adları çözüme dahil edilen derlemelere göre yeniden eşlenir. YAML kaynak denetimi biçiminde varsayılan olarak etkindir. Komutun kısa biçimini kullanabilirsiniz: /fp. |
Kaynak denetim dosyası biçimleri
SolutionPackager, çözümleri ayıklama ve paketleme sırasında iki klasör düzenini destekler.
XML biçimi (eski)
Özgün biçim. Çözümün meta verileri Other\Solution.xml ve Other\Customizations.xml içinde depolanır, ve tüm bileşen dosyaları bu dosyalarla birlikte düz bir klasör hiyerarşisine çıkarılır. Bu biçim, daha fazla yapılandırma olmadan dosya .zip ayıklanırken varsayılan biçimdir.
YAML kaynak denetimi biçimi
Dataverse Git tümleştirmesi ile birlikte sunulan bu biçim, çözüm meta verilerini yapılandırılmış klasör hiyerarşisi arasında dağıtılan YAML dosyaları olarak depolar. Power Apps'ta yerel Git tümleştirmesiyle çözümleri işlediğinizde yazılan formattır.
XML biçimine göre avantajlar
- Kaynak denetiminde daha temiz, bileşen başına daha okunabilir farklar üretir
- Tek bir depo klasöründe birden çok çözümü destekler
- Tuval uygulaması
.msappdosyaları ve modern akışlar yalnızca bu biçimde desteklenir - Eklenti türü adı yeniden eşlemesi varsayılan olarak etkindir
Gerekli klasör yapısı
<rootFolder>/
├── solutions/
│ └── <SolutionUniqueName>/
│ ├── solution.yml (solution metadata)
│ ├── solutioncomponents.yml (paths to all component files)
│ ├── rootcomponents.yml (root-level components)
│ └── missingdependencies.yml (dependency info)
├── publishers/
│ └── <PublisherUniqueName>/
│ └── publisher.yml (publisher definition)
├── entities/ (entity components, if present)
├── workflows/ (classic workflows, if present)
├── modernflows/ (Power Automate cloud flows, if present)
├── canvasapps/ (canvas app .msapp files, if present)
└── [other component folders]/
Önemli
YAML biçimi, dosyaları içeren solutions/ bir *solution.yml alt klasörün varlığıyla otomatik olarak algılanır.
YAML bildirim dosyalarınız (solution.yml, solutioncomponents.ymlvb.) altında solutions/<SolutionUniqueName>/değil klasörün köküne yerleştirilirse, araç YAML biçimini algılamaz. Araç XML yoluna geri döner ve eksik Customizations.xml ile ilgili yanıltıcı bir hata raporlar. Bu sorunu giderme hakkında bilgi için bkz. Sorun giderme .
Daha fazla bilgi: Çözüm YAML kaynak denetimi biçimi başvurusu
Otomatik algılama kurallarını biçimlendirme
| Koşul | Kullanılan biçim |
|---|---|
solutions/*/solution.yml bulundu — tam olarak bir çözüm |
ÇÖZÜM adının klasörden çıkarıldığı YAML biçimi |
solutions/*/solution.yml bulundu — birden çok çözüm |
YAML biçiminde /SolutionName argümanının gerekli olduğu durumlar |
Alt dizin mevcut değil solutions/ |
XML biçimi (eski) |
YAML biçim klasörünü paketleme
Aşağıdaki komut bir YAML biçim klasörü paketler.
SolutionPackager.exe /action:Pack /zipfile:MySolution.zip /folder:C:\repos\myrepo
Çok çözümlü bir klasörden paketleme
Aşağıdaki komut, belirtilen çözümü çok çözümlü bir klasörde paketler.
SolutionPackager.exe /action:Pack /zipfile:SolutionA.zip /folder:C:\repos\myrepo /SolutionName:SolutionA
/map komutunun bağımsız değişkenini kullanın
Aşağıdaki tartışmada, SolutionPackager aracında /map bağımsız değişkeninin kullanımı ayrıntılı olarak ele alınmaktadır.
.xap Silverlight dosyaları ve eklenti derlemeleri gibi otomatik derleme sisteminde oluşturulan dosyalar genellikle kaynak denetimine alınmaz. Web kaynakları, SolutionPackager aracıyla doğrudan uyumlu olmayan konumlardaki kaynak denetiminde zaten var olabilir. Buna benzer dosyaları normalde olduğu gibi Ayıklama klasörünün içinden değil de farklı konumlardan okuması ve paketlemesi için SolutionPackager aracı, /map parametresi eklenerek yönlendirilebilir. /map parametresi, eşleme yönergeleri içeren bir XML dosyasının adını ve yolunu belirtmelidir. Bu yönergeler, dosyaları adlarıyla yoluna göre eşleştirmek için SolutionPackager'a yönlendirir ve eşleştirilen dosyayı bulmak için alternatif konumu gösterir. Aşağıdaki bilgiler, tüm yönergeler için aynı şekilde uygulanır.
Aynı dosyalarla eşleşecek olan yönergeler de dahil olmak üzere birden çok yönerge listelenebilir. Dosyanın başında listelenen yönergeler, daha sonra listelenen yönergelere göre önceliklidir.
Dosya herhangi bir yönerge ile eşleşiyorsa en az bir alternatif konumda bulunmalıdır. Eşleşen alternatif bulunmazsa SolutionPackager bir hata verir.
Klasör ve dosya yolları mutlak veya göreli olabilir. Göreli yollar, her zaman /folder parametresi tarafından belirtilen klasörden değerlendirilir.
Ortam değişkenleri, %variable% söz dizimi kullanılarak belirtilebilir.
"**" joker karakteri, "herhangi bir alt klasörde" anlamına gelir. Yalnızca yolun son bölümü olarak kullanılabilir, örneğin: "c:\folderA\**".
Dosya adı joker karakterleri yalnızca "*.ext" veya "*.*" biçimlerinde kullanılabilir. Başka bir düzen desteklenmez.
Burada üç tür yönerge eşlemesi, nasıl kullanıldıklarının gösterildiği bir örnekle açıklanmaktadır.
Klasör eşleme
Aşağıdaki bilgiler, klasör eşleme hakkında ayrıntılı bilgi sağlar.
XML Biçimi
<Folder map="folderA" to="folderB" />
Tanım
"folderA" ile eşleşen dosya yolları "folderB" olarak değiştirilir.
Her birinin altındaki alt klasörlerin hiyerarşisi tam olarak eşleşmelidir.
Klasör joker karakterleri desteklenmez.
Hiçbir dosya adı belirtilemez.
Örnekler
<Folder map="folderA" to="folderB" /> <Folder map="folderA\folderB" to="..\..\folderC\" /> <Folder map="WebResources\subFolder" to="%base%\WebResources" />
Dosyadan dosyaya eşleme
Aşağıdaki bilgiler, dosyadan dosyaya eşleme hakkında ayrıntılı bilgi sağlar.
XML Biçimi
<FileToFile map="path\filename.ext" to="path\filename.ext" />
Tanım
map parametresiyle eşleşen tüm dosyalar to parametresinde belirtilen addan ve yoldan okunur.
map parametresi için:
Dosya adı belirtilmelidir. Yol isteğe bağlı. Herhangi bir yol belirtilmezse herhangi bir klasördeki dosyalar eşleştirilebilir.
Dosya adı joker karakterleri desteklenmez.
Klasör joker karakteri desteklenir.
toparametresi için:Dosya adı ve yolu belirtilmelidir.
Dosya adı,
mapparametresindeki addan farklı olabilir.Dosya adlarında joker karakterler desteklenmemektedir.
Klasörlerde joker karakter kullanımı desteklenir.
Örnekler
<FileToFile map="assembly.dll" to="c:\path\folder\assembly.dll" />
<FileToFile map="PluginAssemblies\**\this.dll" to="..\..\Plugins\**\that.dll" />
<FileToFile map="Webresrouces\ardvark.jpg" to="%SRCBASE%\CrmPackage\WebResources\JPG format\aardvark.jpg" />
<FileToFile
map="pluginpackages\cr886_PluginPackageTest\package\cr886_PluginPackageTest.nupkg"
to="myplg\bin\Debug\myplg.1.0.0.nupkg" />
Belirtilen konumda dosya önceden varsa, yukarıdaki NuGet paket örneğinde cr886_PluginPackageTest.nupkg üzerine yazılmaz.
Dosyayı bir yola eşleme
Aşağıdakiler, dosya-yol eşlemesi hakkında ayrıntılı bilgi sağlar.
XML Biçimi
<FileToPath map="path\filename.ext" to="path" />
Tanım
map parametresiyle eşleşen tüm dosyalar to parametresinde belirtilen yoldan okunur.
map parametresi için:
Dosya adı belirtilmelidir. Yol, isteğe bağlıdır. Herhangi bir yol belirtilmezse herhangi bir klasördeki dosyalar eşleştirilebilir.
Dosya adı joker karakterleri desteklenir.
Klasör joker karakteri desteklenir.
to parametresi için:
Yol belirtilmelidir.
Klasör joker karakteri desteklenir.
Dosya adı belirtilmemelidir.
Örnekler
<FileToPath map="assembly.dll" to="c:\path\folder" />
<FileToPath map="PluginAssemblies\**\this.dll" to="..\..\Plugins\bin\**" />
<FileToPath map="*.jpg" to="%SRCBASE%\CrmPackage\WebResources\JPG format\" />
<FileToPath map="*.*" to="..\..\%ARCH%\%TYPE%\drop" />
Örnek eşleme
Aşağıdaki XML kodu örneği, SolutionPackager aracının herhangi bir web kaynağını ve CRMDevTookitSample adlı bir Geliştirici Araç Seti projesinden oluşturulan iki varsayılan derlemeyi okumasını sağlayan tam bir eşleme dosyasını gösterir.
<?xml version="1.0" encoding="utf-8"?>
<Mapping>
<!-- Match specific named files to an alternate folder -->
<FileToFile map="CRMDevTookitSamplePlugins.dll" to="..\..\Plugins\bin\**\CRMDevTookitSample.plugins.dll" />
<FileToFile map="CRMDevTookitSampleWorkflow.dll" to="..\..\Workflow\bin\**\CRMDevTookitSample.Workflow.dll" />
<!-- Match any file in and under WebResources to an alternate set of subfolders -->
<FileToPath map="WebResources\*.*" to="..\..\CrmPackage\WebResources\**" />
<FileToPath map="WebResources\**\*.*" to="..\..\CrmPackage\WebResources\**" />
</Mapping>
Yönetilen ve yönetilmeyen çözümler
Dataverse sıkıştırılmış çözüm (.zip) dosyası, burada gösterildiği gibi iki türden biri kullanılarak dışarı aktarılabilir.
Yönetilen çözüm
Kuruluşa aktarılmaya hazır, tamamlanmış bir çözüm. İçeri aktarıldıktan sonra bileşenler eklenemez veya kaldırılamaz, ancak isteğe bağlı olarak daha fazla özelleştirmeye izin verebilirler. Bu, çözümün geliştirilmesi tamamlandığında önerilir.
Yönetilmeyen çözüm
Eklenebilecekler, kaldırılabilecekler veya değiştirilebilecekler ile ilgili hiçbir kısıtlama içermeyen açık bir çözüm. Bu, çözüm geliştirme sürecinde önerilir.
Sıkıştırılmış çözüm dosyasının biçimi, türünün yönetilen veya yönetilmeyen olmasına göre farklılık gösterir. SolutionPackager, her iki türdeki sıkıştırılmış çözüm dosyalarını da işleyebilir. Ancak araç bir türü başka bir türe dönüştüremez. Yönetilmeyen dosya türünü yönetilene dönüştürme örneğinde olduğu gibi çözüm dosyalarını farklı bir türe dönüştürmenin tek yolu yönetilmeyen çözüm .zip dosyasını bir Dataverse sunucusuna almak ve ardından çözümü bir yönetilen çözüm olarak dışarı aktarmaktır.
SolutionPackager, yönetilmeyen ve yönetilen çözüm .zip dosyalarını /PackageType:İkisi parametresi aracılığıyla birleşik bir set olarak işleyebilir. Bu işlemi gerçekleştirmek için .zip dosyalarını aşağıdaki gibi adlandırarak çözümünüzü iki türde olmak üzere iki kez dışarı aktarmak gerekir.
Yönetilmeyen .zip dosyası: AnyName.zip
Yönetilen .zip dosyası: AnyName_managed.zip
Araç, yönetilen zip dosyasının yönetilmeyen dosyayla aynı klasörde olduğunu varsayar ve yönetilen ve yönetilmeyen bileşenlerin farklılıklarını koruyarak her iki dosyayı da tek bir klasöre ayıklar.
Çözüm hem yönetilmeyen hem de yönetilen olarak ayıklandıktan sonra hangi türün oluşturulacağını belirtmek için /PackageType parametresi kullanılarak tek bir klasörden her ikisi veya her tür ayrı ayrı paketlenebilir. Her iki dosyayı da belirtirken, yukarıdaki adlandırma kuralı kullanılarak iki .zip dosyası üretilir. Çift yönetilen ve yönetilmeyen bir klasörden paketleme yaparken /PackageType parametresi eksikse varsayılan, tek bir yönetilmeyen .zip dosyası oluşturulmasıdır.
Sorun Giderme
Kaynak dosyalarını düzenlemek için Visual Studio kullanılırken görüntülenen ileti
Çözüm paketleyicisi tarafından oluşturulan kaynak dosyalarını düzenlemek için Visual Studio kullanırsanız, şunun gibi bir ileti alabilirsiniz: "Failed to determine version id of the resource file <filename>.resx the resource file must be exported from the solutionpackager.exe tool in order to be used as part of the pack process." Bu durum, Visual Studio kaynak dosyasının meta veri etiketlerini veri etiketleriyle değiştirdiği için oluşur.
Geçici çözüm
Kaynak dosyasını tercih ettiğiniz metin düzenleyicisinde açın ve aşağıdaki etiketleri bulup güncelleştirin:
<data name="Source LCID" xml:space="preserve"> <data name="Source file" xml:space="preserve"> <data name="Source package type" xml:space="preserve"> <data name="SolutionPackager Version" mimetype="application/x-microsoft.net.object.binary.base64"><data>olan düğüm adını<metadata>olarak değiştirin.Örneğin, bu dize:
<data name="Source LCID" xml:space="preserve"> <value>1033</value> </data>Şu şekilde değişir:
<metadata name="Source LCID" xml:space="preserve"> <value>1033</value> </metadata>Bu, çözüm paketi oluşturucusunun kaynak dosyasını okumasını ve içeri aktarmasını sağlar. Bu sorun yalnızca Visual Studio Kaynak düzenleyicisi kullanılırken gözlemlenmiştir.
Hata: YAML klasörüyle "Gerekli dosya ...\Other\Customizations.xmlbulunamıyor"
SolutionPackager'ı (veya pac solution pack) gibi solution.ymlYAML dosyalarını içeren bir klasörde çalıştırdığınızda ancak bu dosyalar gerekli solutions/<SolutionUniqueName>/ alt klasörün içine değil klasörün köküne yerleştirildiğinde bu hata görüntülenir.
Neden: Araç, dosyaları içeren bir solutions/ alt klasör arayarak YAML kaynak denetimi biçimini algılar *solution.yml . Bu dizin olmadığında, araç sessizce XML (eski) biçimine geri döner ve bekler Other\Customizations.xml. Sonuçta elde edilen hata iletisi bir XML dosyasına başvurur ve yanıltıcı olan YAML'den bahsetmez.
Düzeltmek: YAML bildirim dosyalarının doğru yolların altında olması için klasörü yeniden düzenleme:
<rootFolder>/
solutions/<YourSolutionUniqueName>/ ← move solution.yml here
solution.yml
solutioncomponents.yml
rootcomponents.yml
missingdependencies.yml
publishers/<YourPublisherUniqueName>/
publisher.yml
Klasörü bir Git tümleştirmesi işlemesinden veya pac solution cloneiçinden aldıysanız, klasör yapısı zaten doğru olmalıdır. Üst düzey YAML dosyalarını içeren ancak solutions/ alt dizini bulunmayan bir klasör, eksik bir ayıklamayı temsil eder ve doğrudan paketlenemez.
Uyarı: rootcomponents.yml'de bildirilen bileşenin kaynak dosyası yok
Bu uyarı, tuval uygulaması gibi bir bileşen içinde rootcomponents.yml listelendiğinde ancak beklenen bileşen klasöründe karşılık gelen kaynak dosya bulunmadığında (örneğin, canvasapps/<schema-name>/) görüntülenir.
Etkisi: Araç yine başarılı olur (çıkış kodu 0) ve geçerli .zip bir dosya oluşturur, ancak bildirilen bileşen paketlenmiş çözümden atlanır.
Neden: Klasör kısmi bir ayıklama tarafından oluşturuldu veya bileşenin kaynak dosyaları depoya dahil edilmedi. Örneğin, yalnızca çözüm manifest dosyaları taahhüt edilmiştir, tuval uygulaması kendisi değil.
Düzeltmek: içinde rootcomponents.yml bildirilen tüm bileşenlerin klasörde karşılık gelen kaynak dosyaları olduğundan emin olun. Tuval uygulamaları için .msapp dosyasının canvasapps/<schema-name>/ altında bulunması gerekir. Eksik dosyalar varsa, tam çözümü Dataverse'ten yeniden dışa aktarın ve yeniden paketinden çıkarın veya tam bir ayıklama elde etmek için pac solution clone kullanın.