Muistiinpano
Tämän sivun käyttö edellyttää valtuutusta. Voit yrittää kirjautua sisään tai vaihtaa hakemistoa.
Tämän sivun käyttö edellyttää valtuutusta. Voit yrittää vaihtaa hakemistoa.
SolutionPackager on työkalu, jolla voit hajottaa palautuvasti Microsoft Dataverse pakatun ratkaisutiedoston useiksi XML-tiedostoiksi ja muiksi tiedostoiksi. Tämän jälkeen näitä tiedostoja on helppo hallita lähdehallintajärjestelmän avulla. Seuraavissa osissa näytetään, miten työkalu suoritetaan ja miten työkalua käytetään hallittujen ja hallitsemattomien ratkaisujen kanssa.
Tärkeää
SolutionPackager-työkalu ei ole enää suositeltava tapa purkaa ja paketoida ratkaisuja. SolutionPackager-työkalun ominaisuudet sisältyvät Power Platformin komentorivikäyttöliittymään. Komennossa pac solution on useita verbejä, kuten unpack, pack, cloneja sync , jotka sisältävät samat pohjana olevat SolutionPackager-työkalun ominaisuudet.
Tietoja SolutionPackager-työkalun löytämiseen
SolutionPackager-työkalu jaetaan osana Microsoft. CrmSdk.CoreTools NuGet-paketti. Voit asentaa ohjelman alla mainittujen vaiheiden avulla.
- Lataa NuGet-paketti.
- Anna paketin tiedostonimen tunnisteelle .nupkg uusi tunniste .zip.
- Pura pakatun (zip) tiedoston sisältö.
Etsi suoritettava SolutionPackager.exe-tiedosto <puretun-kansion-nimi>/bin/coretools-kansiosta. Suorita ohjelma coretools-kansiosta tai lisää se PATH-kansioon.
SolutionPackagerin komentoriviargumentit
SolutionPackager on komentorivityökalu, joka voidaan käynnistää seuraavassa taulukossa esitetyillä parametreilla.
| Argumentti | Description |
|---|---|
| /action: {Poista|Pakkaa} | Pakollinen. Suoritettava toiminto. Toiminto voi joko purkaa ratkaisun .zip-tiedoston kansioon tai pakata kansion .zip-tiedostoksi. |
| /zipfile: <tiedostopolku> | Pakollinen. Ratkaisun .zip-tiedoston polku ja nimi. Purettaessa tiedoston on oltava olemassa ja luettavissa. Pakattaessa tiedosto korvataan. |
| /folder: <kansion polku> | Pakollinen. Kansion polku. Purettaessa tämä kansio luodaan ja täytetään komponenttitiedostoilla. Pakattaessa tämän kansion on oltava jo olemassa ja sisällettävä aiemmin purettuja komponenttitiedostoja. |
| /packagetype: {Hallitsematon|Hallittu|Molemmat} | Valinnainen. Käsiteltävän paketin tyyppi. Oletusarvona on Hallitsematon. Tämä argumentti voidaan jättää pois useimmissa tapauksissa, koska pakettityyppi voidaan lukea .zip-tiedostosta tai komponenttitiedostoista. Kun purettaessa on määritetty Molemmat, hallitun ja hallitsemattoman ratkaisun .zip-tiedostojen on oltava käytettävissä, ja ne käsitellään yhdessä kansiossa. Kun purettaessa on määritetty Molemmat, hallitun ja hallitsemattoman ratkaisun .zip-tiedostot luodaan yhdestä kansiosta. Lisätietoja on myöhemmin tässä artikkelissa hallittujen ja hallitsemattomien ratkaisujen käyttöä koskevassa osassa. |
| /allowWrite:{Yes|No} | Valinnainen. Oletusarvo on Kyllä. Tätä argumenttia käytetään vain purkamisen aikana. Kun määrityksenä on /allowWrite:No, työkalu suorittaa kaikki toiminnot, mutta se ei voi kirjoittaa tai poistaa tiedostoja. Purkutoimintoa voidaan arvioida turvallisesti korvaamatta tai poistamatta mitään olemassa olevia tiedostoja. |
| /allowDelete:{Yes|No|Prompt} | Valinnainen. Oletusarvona on Prompt. Tätä argumenttia käytetään vain purkamisen aikana. Kun määrityksenä on /allowDelete:Yes, kaikki parametrissa /folder määritetyssä kansiossa olevat odottamattomat tiedostot poistetaan automaattisesti. Kun määrityksenä on /allowDelete:No, mitään ei poisteta. Kun määrityksenä on /allowDelete:Prompt, konsoli pyytää käyttäjää hyväksymään tai hylkäämään jokaisen poistotoiminnon. Jos määrityksenä on /allowWrite:No, poistamista ei tapahdu, vaikka määrityksenä olisi myös /allowDelete:Yes. |
| /clobber | Valinnainen. Tätä argumenttia käytetään vain purkamisen aikana. Kun /clobber on määritetty, tiedostot, joilla on vain luku -määritejoukko, korvataan tai poistetaan. Kun tätä ei määritetä, tiedostoja, joilla on vain luku -määrite, ei korvata tai poisteta. |
| /errorlevel: {Off|Virhe|Varoitus|Tiedot|Yksityiskohtainen} | Valinnainen. Oletusarvona on Info. Tämä argumentti ilmaisee tulosteena olevien kirjaustietojen tason. |
| /map: <tiedostopolku> | Valinnainen. Polku ja yhdistämismäärityksen direktiivit sisältävän .xml-tiedoston nimi. Käytettäessä tiedostoja purkamisen yhteydessä, yleensä /folder-parametrin mukaisesta kansiosta luettavat tiedostot luetaan yhdistämismäärityksen tiedoston mukaisista vaihtoehtoisista sijainneista. Pakettitoiminnon aikana direktiivejä vastaavia tiedostoja ei kirjoiteta. |
| /nologo | Valinnainen. Piilota palkki suorituksen aikana. |
| /log: <tiedostopolku> | Valinnainen. Lokitiedoston polku ja nimi. Jos tiedosto on jo olemassa, uudet lokitiedot liitetään tiedostoon. |
| @ <tiedostopolku> | Valinnainen. Sen tiedoston polku ja nimi, joka sisältää työkalun komentoriviargumentteja. |
| /sourceLoc: <merkkijono> | Valinnainen. Tämä argumentti luo malliresurssitiedoston ja on kelvollinen vain purkamisen yhteydessä. Mahdolliset arvot ovat auto tai LCID-/ISO-koodi kielelle, jonka haluat viedä. Kun tätä argumenttia käytetään, määritetyn kielialueen merkkijonoresurssit puretaan neutraalina .resx-tiedostona. Jos määritettynä on auto tai vain kytkimen pitkä tai lyhyt muoto on määritetty, käytetään peruskielialuetta tai ratkaisua. Voit käyttää komennon lyhyttä muotoa: /src. |
| /localize | Valinnainen. Pura tai yhdistä kaikki merkkijonoresurssit .resx-tiedostoihin. Voit käyttää komennon lyhyttä muotoa: /loc. Lokalisointivaihtoehto tukee .resx-tiedostojen jaettuja komponentteja. Lisätietoja: RESX-verkkoresurssin käyttäminen |
| /SolutionName: <nimi> | Valinnainen. Pakattavan tai poimittavan ratkaisun yksilöivä nimi, kun lähdekansio sisältää useita ratkaisuja kohdassa solutions/*/solution.yml. Pakollinen, kun tunnistetaan useampi kuin yksi ratkaisu. Koskee vain YAML-lähteen ohjausobjektin muotoa. Voit käyttää komennon lyhyttä muotoa: /sn. |
| /remapPluginTypeNames | Valinnainen. Kun määritys on määritetty, laajennuksen täydelliset tyyppinimet yhdistetään uudelleen ratkaisuun sisältyvien kokoonpanojen perusteella. Oletusarvoisesti käytössä YAML-lähteen ohjausobjektimuodossa. Voit käyttää komennon lyhyttä muotoa: /fp. |
Lähteen hallinnan tiedostomuodot
SolutionPackager tukee kahta kansioasettelua ratkaisujen poimimiseen ja pakkaamiseen.
XML-muoto (vanha)
Alkuperäinen muoto. Ratkaisun metatiedot tallennetaan kohteeseen Other\Solution.xml ja Other\Customizations.xml, ja kaikki osatiedostot puretaan tietuekansiohierarkiaan näiden tiedostojen rinnalla. Tämä muoto on oletusmuoto, kun tiedosto puretaan .zip ilman lisämäärityksiä.
YAML-lähteen ohjausobjektin muoto
Dataverse Git -integroinnin rinnalla tämä muoto tallentaa ratkaisun metatiedot YAML-tiedostoina, jotka on jaettu jäsennettyyn kansiohierarkiaan. Tämä muoto kirjoitetaan, kun teet ratkaisuja käyttäen alkuperäistä Git-integrointia Power Apps.
XML-muotoa enemmän etuja
- Tuottaa siistimpiä, helpommin luettavissa olevia komponenttikohtaisia eroavia lähdeohjausobjektissa
- Tukee useita ratkaisuja yhdessä säilökansiossa
- Kangassovellusten
.msapptiedostoja ja moderneja virtoja tuetaan vain tässä muodossa. - Laajennuksen tyypin nimen uudelleenyhteennys on oletusarvoisesti käytössä
Pakollinen kansiorakenne
<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]/
Tärkeää
YAML-muoto havaitaan automaattisesti tiedostoja sisältävän solutions/ alikansion *solution.yml avulla.
Jos YAML-luettelotiedostot (solution.yml, solutioncomponents.ymlja niin edelleen) sijoitetaan kansion pääkansioon alle :n asemesta solutions/<SolutionUniqueName>/, työkalu ei tunnista YAML-muotoa. Työkalu palaa XML-polkuun ja ilmoittaa harhaanjohtavasta virheestä, joka koski puuttuvaa -tiedostoa Customizations.xml. Lisätietoja tämän ongelman korjaamisesta on kohdassa Vianmääritys .
Lisätietoja: Ratkaisun YAML-lähteen hallinnan muotoviittaus
Automaattisen tunnistuksen sääntöjen muotoileminen
| Ehto | Käytetty muoto |
|---|---|
solutions/*/solution.yml found – täsmälleen yksi ratkaisu |
YAML-muoto, jossa ratkaisun nimi päätellään kansiosta |
solutions/*/solution.yml löydetään – useita ratkaisuja |
YAML-muoto, jossa /SolutionName argumentti on pakollinen |
Ei solutions/ alihakemistoa käytettävissä |
XML-muoto (vanha) |
YAML-muotokansion pakkaaminen
Seuraava komento pakkaa YAML-muotoisen kansion.
SolutionPackager.exe /action:Pack /zipfile:MySolution.zip /folder:C:\repos\myrepo
Pakkaaminen usean ratkaisun kansiosta
Seuraava komentopaketti pakkaa määritetyn ratkaisun usean ratkaisun kansioon.
SolutionPackager.exe /action:Pack /zipfile:SolutionA.zip /folder:C:\repos\myrepo /SolutionName:SolutionA
Käytä komentoargumenttia /map
Seuraavassa keskustelussa on tietoja /map-argumentin käyttämisestä SolutionPackager-työkalussa.
Automatisoidussa koontijärjestelmässä koottuja tiedostoja, kuten Silverlightin .xap-tiedostoja ja laajennuskokoonpaja, ei yleensä kuitata lähdevalvonnassa. Lähteenvalvonnassa voi olla jo verkkoresursseja sellaisissa paikoissa, jotka eivät ole suoraan yhteensopivia SolutionPackager-työkalun kanssa. Sisällyttämällä /map-parametrin SolutionPackager-työkalu voidaan ohjata lukemaan ja pakkaamaan tällaisia tiedostoja vaihtoehtoisista sijainneista eikä purkukansiosta, kuten yleensä. Yhdistämismäärityksen direktiivit sisältävän XML-tiedoston nimi ja polku on määritettävä /map-parametrissa. Nämä direktiivit ohjaavat SolutionPackager-työkalun yhdistämään tiedostot nimen ja polun mukaan ja osoittamaan vaihtoehtoisen sijainnin yhdistetyn tiedoston löytämiseksi. Seuraavat tiedot koskevat kaikkia direktiivejä tasavertaisesti.
Luettelossa voi olla useita direktiivejä, mukaan lukien ne, jotka yhdistävät identtisiä tiedostoja. Tiedoston alussa luetellut direktiivit ovat ensisijaisia myöhemmin lueteltuihin direktiiveihin nähden.
Jos tiedosto vastaa jotakin direktiiviä, sen on löydyttävä vähintään yhdestä vaihtoehtoisesta sijainnista. Jos vastaavia vaihtoehtoja ei löydy, SolutionPackager antaa virheen.
Kansio ja tiedostopolut voivat olla absoluuttisia tai suhteellisia. Suhteelliset polut arvioidaan aina /folder-parametrin määrittämästä kansiosta käsin.
Ympäristömuuttujat voidaan määrittää %variable%-syntaksin avulla.
Kansion yleismerkkiä "**" voidaan käyttää tarkoittamaan "missä tahansa alikansiossa". Sitä voidaan käyttää vain polun viimeisenä osana, esimerkiksi "c:\folderA\**".
Tiedostonimen yleismerkkejä voidaan käyttää vain lomakkeissa "*.ext" tai "*.*". Muita malleja ei tueta.
Tässä on kuvattu kolmentyyppisiä direktiivien yhdistämismäärityksiä sekä esimerkki, jossa kerrotaan, miten niitä käytetään.
Kansioiden kartoitus
Alla on yksityiskohtaisia tietoja kansioiden yhdistämismäärityksestä.
Xml-muoto
<Folder map="folderA" to="folderB" />
Description
Kansiota "folderA" vastaavat tiedostopolut vaihdetaan kansioon "folderB".
Näiden alikansioiden hierarkioiden on oltava identtiset.
Kansion yleismerkkejä ei tueta.
Tiedostonimiä ei voi määrittää.
Esimerkit
<Folder map="folderA" to="folderB" /> <Folder map="folderA\folderB" to="..\..\folderC\" /> <Folder map="WebResources\subFolder" to="%base%\WebResources" />
Tiedostojen välinen yhdistämismääritys
Seuraavassa annetaan yksityiskohtaisia tietoja tiedostojen välisestä yhdistämismäärityksestä.
Xml-muoto
<FileToFile map="path\filename.ext" to="path\filename.ext" />
Description
Kaikki map-parametria vastaavat tiedostot luetaan to-parametrissa määritetystä nimestä ja polusta.
map-parametrin osalta:
Tiedoston nimi on määritettävä. Polku on valinnainen. Jos polkua ei määritetä, voidaan yhdistää missä tahansa kansiossa olevia tiedostoja.
Tiedostonimen yleismerkkejä ei tueta.
Kansion yleismerkkiä tuetaan.
to-parametrin osalta:Tiedoston nimi ja polku on määritettävä.
Tiedoston nimi voi poiketa
map-parametrissa olevasta nimestä.Tiedostonimen yleismerkkejä ei tueta.
Kansion yleismerkkiä tuetaan.
Esimerkit
<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" />
Edellä olevassa NuGet-pakettiesimerkissä cr886_PluginPackageTest.nupkg-tiedostoa ei korvata, jos tiedosto on jo määritetyssä sijainnissa.
Tiedostopolun määrittäminen
Seuraavassa annetaan yksityiskohtaisia tietoja tiedoston ja polun yhdistämismäärityksestä.
Xml-muoto
<FileToPath map="path\filename.ext" to="path" />
Description
Kaikki map-parametria vastaavat tiedostot luetaan to-parametrissa määritetystä polusta.
map-parametrin osalta:
Tiedoston nimi on määritettävä. Polku on valinnainen. Jos polkua ei määritetä, voidaan yhdistää missä tahansa kansiossa olevia tiedostoja.
Tiedostonimen yleismerkkejä tuetaan.
Kansion yleismerkkiä tuetaan.
to-parametrin osalta:
Polku on määritettävä.
Kansion yleismerkkiä tuetaan.
Tiedoston nimeä ei ole pakko määrittää.
Esimerkit
<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" />
Esimerkki kartoituksesta
Seuraava XML-koodinäyte näyttää täydellisen yhdistämiskartoituksen tiedoston, jonka avulla SolutionPackager-työkalu voi lukea mitä tahansa verkkoresursseja sekä kaksi oletusarvoisesti luotua kokoonpanoa CRMDevTookitSample-nimisestä Developer Toolkit -projektista.
<?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>
Hallitut ja ei-hallitut ratkaisut
Dataversen pakattu ratkaisutiedosto (.zip) voidaan viedä yhdessä kahdesta tyypistä, kuten tässä näkyy.
Hallittu ratkaisu
Valmis ratkaisu, joka voidaan tuoda organisaatioon. Kun komponentit on tuotu, niitä ei voi lisätä tai poistaa, vaikka ne voivat valinnaisesti sallia lisämukautukset. Tätä suositellaan, kun ratkaisun kehitys on valmis.
Hallitsematon ratkaisu
Avoin ratkaisu, jossa ei ole rajoituksia sille, mitä voidaan lisätä, poistaa tai muokata. Tätä suositellaan ratkaisun kehittämisen aikana.
Pakatun ratkaisutiedoston muoto on erilainen sen tyypin perusteella eli joko hallittu tai hallitsematon. SolutionPackager voi käsitellä molempia ratkaisutiedostojen muotoja. Työkalu ei kuitenkaan voi muuntaa yhtä tyyppiä toiseksi. Ainoa tapa muuntaa ratkaisutiedostot eri tyypiksi, kuten hallitsemattomasta hallittuun, on tuoda hallitsemattoman ratkaisun. zip-tiedosto Dataverse -palvelimelle ja sitten viedä ratkaisu hallittuna ratkaisuna.
SolutionPackager voi käsitellä hallitsemattomien ja hallittujen ratkaisujen .zip-tiedostoja yhdistettynä joukkona parametrin /PackageType:Both kautta. Jotta tämä toiminto voidaan suorittaa, ratkaisu on vietävä kahteen kertaan kumpanakin tyyppinä ja .zip-tiedostot on nimettävä seuraavasti.
Hallitsematon .zip-tiedosto: JokuNimi.zip
Hallittu .zip-tiedosto: JokuNimi_hallittu.zip
Työkalu olettaa, että hallittu zip-tiedosto on samassa kansiossa kuin hallitsematon tiedosto, ja purkaa molemmat tiedostot yhteen kansioon säilyttäen erot sen välillä, missä on hallittuja ja hallitsemattomia komponentteja.
Kun ratkaisu on purettu sekä hallitsemattomana että hallittuna, kyseisestä yksittäisestä kansiosta voi pakata molemmat tyypit tai kummankin tyypin yksittäin käyttäen /PackageType-parametria sen määrittämiseen, mikä tyyppi luodaan. Kun molemmat tiedostot määritetään, kaksi .zip-tiedostoa tuotetaan käyttämällä edellä esitettyä nimeämiskäytäntöä. Jos /PackageType-parametri puuttuu, kun pakkaus suoritetaan kansiosta, jossa on sekä hallittua että hallitsematonta sisältöä, tuotetaan oletusarvoisesti yksittäinen hallitsematon .zip-tiedosto.
Vianmääritys
Sanoma, joka tulee näkyviin, kun käytät Visual Studio resurssitiedostojen muokkaamiseen
Jos käytät Visual Studio ratkaisupaketin luoman resurssin muokkaukseen, näyttöön saattaa tulla seuraavankaltainen viesti: "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." Tämä tapahtuu, koska Visual Studio korvaa resurssitiedoston metatietotunnisteet tietotunnisteilla.
Ratkaisutapa
Avaa resurssitiedosto haluamassasi tekstinkäsittelyohjelmassa ja paikallista ja päivitä seuraavat tunnisteet:
<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">Vaihda solmun nimi muodosta
<data>muotoon<metadata>.Esimerkiksi tämä merkkijono:
<data name="Source LCID" xml:space="preserve"> <value>1033</value> </data>Muuttuu muotoon:
<metadata name="Source LCID" xml:space="preserve"> <value>1033</value> </metadata>Tämän ansiosta Solution Packager voi lukea ja tuoda resurssitiedoston. Tämä ongelma on havaittu vain käytettäessä Visual Studio Resource Editoria.
Virhe: Tarvittavaa tiedostoa ei löydy ...\Other\Customizations.xmlYAML-kansion kanssa
Tämä virhesanoma tulee näkyviin, kun suoritat SolutionPackager-tiedoston (tai pac solution pack) kansiossa, joka sisältää YAML-tiedostoja, kuten solution.yml, mutta kyseiset tiedostot sijoitetaan kansion pääkansioon vaaditun solutions/<SolutionUniqueName>/ alikansion sijaan.
Aiheuttaa: Työkalu tunnistaa YAML-lähteen ohjausobjektin muodon etsimällä tiedostoja sisältävän solutions/ alikansion*solution.yml. Kun kyseinen hakemisto ei ole käytössä, työkalu palaa automaattisesti XML (vanha) -muotoon ja odottaa Other\Customizations.xml. Tulokseksi saatava virhesanoma viittaa XML-tiedostoon eikä mainitse YAML:ää, joka on harhaanjohtava.
Korjata: Järjestä kansio uudelleen niin, että YAML-luettelotiedostot ovat oikeilla poluilla:
<rootFolder>/
solutions/<YourSolutionUniqueName>/ ← move solution.yml here
solution.yml
solutioncomponents.yml
rootcomponents.yml
missingdependencies.yml
publishers/<YourPublisherUniqueName>/
publisher.yml
Jos olet saanut kansion Git-integroinnin vahvistustiedoista tai pac solution clone, kansiorakenteen pitäisi olla jo oikein. Kansio, joka sisältää vain ylimmän tason YAML-tiedostot ilman solutions/ alihakemistoa, merkitsee epätäydellistä purkua, eikä sitä voi pakata suoraan.
Varoitus: rootcomponents.yml määritetyllä osalla ei ole lähdetiedostoja
Tämä varoitus tulee näkyviin, kun osa, kuten pohjaan perustuva sovellus, on luettelossa rootcomponents.yml , mutta vastaavia lähdetiedostoja ei ole odotetun osan kansiossa (esimerkiksi canvasapps/<schema-name>/).
Vaikutus: Työkalu onnistuu silti (lopeta koodi 0) ja tuottaa kelvollisen .zip tiedoston, mutta määritetty osa jätetään pois pakatusta ratkaisusta.
Aiheuttaa: Kansio luotiin osakatkelmalla tai osan lähdetiedostot eivät sisälly säilöön. Esimerkiksi vain ratkaisun luettelotiedostot on varattu, ei itse pohjaan perustuvaa sovellusta.
Korjata: Varmista, että kaikilla määritetyillä rootcomponents.yml osilla on vastaavat lähdetiedostot -kansiossa. Pohjaan perustuvissa .msapp sovelluksissa tiedoston on oltava kohdassa canvasapps/<schema-name>/. Jos tiedostoja puuttuu, vie koko ratkaisu Uudelleen Dataversesta ja pura se uudelleen, tai hanki täydellinen ote toiminnolla pac solution clone .