SolutionPackager-työkalu

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.

Mistä SolutionPackager-työkalu löytyy?

SolutionPackager-työkalu jaetaan osana Microsoft.CrmSdk.CoreTools NuGet -pakettia. Voit asentaa ohjelman alla mainittujen vaiheiden avulla.

  1. Lataa NuGet-paketti.
  2. Anna paketin tiedostonimen tunnisteelle .nupkg uusi tunniste .zip.
  3. 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.

SolutionPackager-komentoriviargumentit

SolutionPackager on komentorivityökalu. Voit käynnistää sen käyttämällä seuraavassa taulukossa kuvattuja parametreja.

Argumentti Description
/action: {Poista|Pakkaa} Pakollinen. Suoritettava toiminto. Toiminto voi olla joko ratkaisun .zip tiedoston purkaminen kansioon tai kansion pakkaaminen .zip tiedostoon.
/zipfile: <tiedoston polku> 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. Jätä tämä argumentti pois useimmissa tapauksissa, koska työkalu voi lukea pakettityypin .zip-tiedostosta tai osatiedostoista. 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:{Kyllä|Ei} Valinnainen. Oletusarvo on Kyllä. Käytä tätä argumenttia vain poiminnan aikana. Kun määrität /allowWrite:Ei, työkalu suorittaa kaikki toiminnot, mutta ei kirjoita tai poista mitään tiedostoja. Voit testata poimintatoimintoa turvallisesti korvaamatta tai poistamatta olemassa olevia tiedostoja.
/allowDelete:{Kyllä|Ei|Kehote} Valinnainen. Oletusarvona on Prompt. Käytä tätä argumenttia vain poiminnan aikana. Kun määrität /allowDelete:Yes, työkalu poistaa automaattisesti kaikki /folder-parametrin määrittämässä kansiossa olevat tiedostot, joita ei odoteta. Kun määrität /allowDelete:No, työkalu ei poista tiedostoja. Kun määrität /allowDelete:Prompt, käyttäjää kehotetaan konsolin kautta hyväksymään tai estämään kaikki poistotoiminnot. Jos määrität /allowWrite:No, työkalu ei poista tiedostoja, vaikka myös /allowDelete:Yes olisi määritetty.
/clobber Valinnainen. Käytä tätä argumenttia vain poiminnan aikana. Kun määrität /clobber, työkalu korvaa tai poistaa tiedostot, joille on määritetty vain luku -määrite. Jos tätä ei ole määritetty, työkalu ei korvaa tai poista tiedostoja, joilla on vain luku -määrite.
/errorlevel: {Off|Virhe|Varoitus|Tiedot|Yksityiskohtainen} Valinnainen. Oletusarvona on Info. Tämä argumentti ilmaisee tulosteena olevien kirjaustietojen tason.
/map: <tiedoston polku> Valinnainen. Tiedoston yhdistämisohjeita sisältävän .xml tiedoston polku ja nimi. Poiminnan aikana käytettynä työkalu lukee tiedostoja, jotka yleensä luetaan /folder-parametrin määrittämän kansion sisältä, vaihtoehtoisista sijainneista määritystiedostossa määritetyllä tavalla. Pakkaustoiminnon aikana työkalu ei kirjoita -direktiivejä vastaavia tiedostoja.
/nologo Valinnainen. Piilota palkki suorituksen aikana.
/log: <tiedoston polku> Valinnainen. Lokitiedoston polku ja nimi. Jos tiedosto on jo olemassa, uudet lokitiedot liitetään tiedostoon.
@ <tiedostopolku> Valinnainen. Työkalun komentoriviargumentteja sisältävän tiedoston polku ja nimi.
/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 käytät tätä argumenttia, työkalu poimii merkkijonoresurssit annetusta maa-asetuksesta neutraalina .resx-tiedostona. Jos määrität arvon auto tai vain valitsimen pitkän tai lyhyen muodon, käytetään perusaluekohtaa tai ratkaisua. Voit käyttää komennon lyhyttä muotoa: /src.
/paikallistaa Valinnainen. Pura tai yhdistä kaikki merkkijonoresurssit .resx-tiedostoihin. Voit käyttää komennon lyhyttä muotoa: /loc. Lokalisointivaihtoehto tukee .resx-tiedostojen jaettuja komponentteja. Lisätietoja on kohdassa RESX-verkkoresurssien 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 näin on määritetty, työkalu muuntaa laajennuksen täysin määritetyt tyyppinimet ratkaisun kokoonpanojen mukaan. 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. Työkalu tallentaa ratkaisun metatiedot kohteisiin Other\Solution.xml ja Other\Customizations.xml. Työkalu poimii kaikki osatiedostot litteään kansiohierarkiaan näiden tiedostojen rinnalle. Tämä muoto on oletusmuoto, kun purat .zip -tiedoston 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ä on muoto, joka kirjoitetaan, kun kommitoit ratkaisuja käyttämällä Power Appsin alkuperäistä Git-integrointia.

XML-muotoa enemmän etuja

  • Tuottaa siistimpiä, helpommin luettavia komponenttikohtaisia eroja versionhallinnassa.
  • Tukee useita ratkaisuja samassa tietovaraston kansiossa.
  • Canvas-sovellusten .msapp tiedostoja ja nykyaikaisia työnkulkuja tuetaan vain tässä muodossa.
  • Laajennustyyppien nimien uudelleenkohdistus 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ää

solutions/-tiedostoja sisältävän *solution.yml-alikansion olemassaolo ilmaisee YAML-muodon. Jos sijoitat YAML-manifestitiedostot (solution.yml, solutioncomponents.yml ja niin edelleen) kansion juureen hakemiston solutions/<SolutionUniqueName>/ alle sijoittamisen sijaan, 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

Tila 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 kerrotaan yksityiskohtaisesti /map-argumentin käytöstä SolutionPackager-työkalussa.

Tiedostoja, jotka rakennetaan automaattisessa koontijärjestelmässä, kuten .xap Silverlight-tiedostoja ja laajennuskokoonpanoja, ei yleensä kirjata versionhallintaan. Lähdekoodin hallinnassa saattaa jo olla verkkoresursseja, jotka eivät ole suoraan yhteensopivia SolutionPackager-työkalun kanssa. Sisällyttämällä /map-parametrin voit ohjata SolutionPackager-työkalun lukemaan ja pakkaamaan nämä tiedostot vaihtoehtoisista sijainneista Extract-kansion sijaan. 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ä yhtäläisesti.

  • Voit luetella useita direktiivejä, mukaan lukien direktiivit, jotka vastaavat samoja 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.

  • Määritä ympäristömuuttujat käyttämällä syntaksia %variable%.

  • Käytä kansion yleismerkkiä ** tarkoittamaan "missä tahansa alikansiossa". Voit käyttää sitä vain polun viimeisenä osana, esimerkiksi: c:\folderA\**.

  • Käytä tiedostonimen yleismerkkejä vain muodoissa *.ext tai *.*. Mitään muuta mallia ei tueta.

    Seuraavassa osiossa kuvataan kolmea direktiivikartoitustyyppiä sekä esimerkki, jossa näytetään, miten niitä käytetään.

Kansioiden kartoitus

Seuraavassa osiossa on yksityiskohtaisia tietoja kansioiden vastaavuudesta.

XML-muoto

<Folder map="folderA" to="folderB" />

Kuvaus

Tiedostopolut, jotka vastaavat kansiota "folderA", vaihdetaan kansioon "folderB".

  • Kunkin kansion alikansioiden hierarkian on vastattava täsmälleen toisiaan.

  • Kansion yleismerkkejä ei tueta.

  • Et voi määrittää tiedostonimiä.

    Esimerkkejä

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

Kuvaus

Parametria map vastaava tiedosto lukee sen parametrissa to määritetystä nimestä ja polusta.

map-parametrin osalta:

  • Määritä tiedostonimi. Polku on valinnainen. Jos et määritä polkua, yhdistämismääritys voi vastata minkä tahansa kansion tiedostoihin.

  • Tiedostonimen yleismerkkejä ei tueta.

  • Tukee kansion yleismerkkiä.

    to-parametrin osalta:

  • Määritä tiedoston nimi ja polku.

  • Tiedostonimi voi erota parametrin nimestä map .

  • Tiedostonimen yleismerkkejä ei tueta.

  • Tukee kansion yleismerkkiä.

Esimerkkejä

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

Edellisessä NuGet-paketin esimerkissä cr886_PluginPackageTest.nupkg:ta ei korvata, jos tiedosto on jo olemassa määritetyssä sijainnissa.

Tiedoston ja polun vastaavuus

Seuraavassa osassa on yksityiskohtaisia tietoja tiedoston ja polun välisestä vastaavuudesta.

XML-muoto

<FileToPath map="path\filename.ext" to="path" />

Kuvaus

map-parametri määrittää täsmättävän tiedoston, ja to-parametri määrittää polun, josta luetaan.

map-parametrin osalta:

  • Määritä tiedostonimi. Polku on valinnainen. Jos et määritä polkua, yhdistämismääritys voi vastata minkä tahansa kansion tiedostoihin.

  • Tukee tiedostonimen yleismerkkejä.

  • Tukee kansion yleismerkkiä.

to-parametrin osalta:

  • Määritä polku.

  • Tukee kansion yleismerkkiä.

  • Älä määritä tiedostonimeä.

    Esimerkkejä

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

Esimerkkikartoitus

Seuraavassa XML-koodiesimerkissä on täydellinen yhdistämistiedosto, jonka avulla SolutionPackager-työkalu voi lukea minkä tahansa verkkoresurssin ja 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

Voit viedä Dataverse-ratkaisun pakattuna (.zip)-tiedostona joko hallittuna tai hallitsemattomana ratkaisuna.

Hallittu ratkaisu
Valmis ratkaisu, joka on valmis tuotavaksi organisaatioon. Kun komponentit on tuotu, niitä ei voi lisätä tai poistaa, vaikka voit halutessasi sallia lisämukauttamisen. Käytä tätä tyyppiä, kun ratkaisun kehitys on valmis.

Hallitsematon ratkaisu
Avoin ratkaisu ilman rajoituksia sille, mitä voit lisätä, poistaa tai muokata. Käytä tätä tyyppiä ratkaisun kehittämisen aikana.

Pakatun ratkaisutiedoston muoto vaihtelee sen mukaan, onko se hallittu vai hallitsematon. SolutionPackager voi käsitellä kummankin tyyppisiä pakattuja ratkaisutiedostoja. Työkalu ei kuitenkaan voi muuntaa yhtä tyyppiä toiseksi. Ainoa tapa muuntaa ratkaisutiedostot eri tyypiksi, esimerkiksi hallitsemattomasta hallittuun, on tuoda hallitsematon ratkaisu .zip tiedosto Dataverse-palvelimeen ja viedä sitten ratkaisu hallittuna ratkaisuna.

SolutionPackager voi käsitellä hallitsemattomia ja hallittuja .zip-ratkaisutiedostoja yhdistettynä kokonaisuutena parametrin /PackageType:Both avulla. Tämän toiminnon suorittaminen edellyttää, että viet ratkaisusi kahdesti, kerran kumpanakin tyyppinä. Nimeä .zip tiedostot seuraavasti:

Hallitsematon .zip-tiedosto: JokuNimi.zip

Hallittu .zip-tiedosto: JokuNimi_hallittu.zip

Työkalussa oletetaan, että hallittu zip-tiedosto on samassa kansiossa kuin hallitsematon tiedosto. Se purkaa molemmat tiedostot yhteen kansioon ja säilyttää erot niissä kohdin, joissa on hallittuja ja hallitsemattomia komponentteja.

Kun olet purkanut ratkaisun hallitsemattomana ja hallittuna, voit pakata molemmat tyypit tai kunkin tyypin yksitellen tästä yhdestä kansiosta. Määritä luotava tyyppi parametrilla /PackageType. Kun määrität molemmat tiedostot, työkalu tuottaa kaksi .zip -tiedostoa käyttämällä edellä olevaa nimeämiskäytäntöä. Jos et määritä /PackageType -parametria pakattaessa sekä hallittua että hallitsematonta sisältävästä kansiosta, oletusarvona on yhden hallitsemattoman .zip-tiedoston luominen.

Vianmääritys

Sanoma, joka tulee näkyviin, kun käytät Visual Studio resurssitiedostojen muokkaamiseen

Jos käytät Visual Studiota ratkaisupaketin luomien resurssitiedostojen muokkaamiseen, saatat saada seuraavankaltaisen viestin, kun pakkaat uudelleen, esimerkiksi seuraavanlaisen: "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ä sanoma tulee näkyviin, koska Visual Studio korvaa resurssitiedoston metatietotunnisteet tietotunnisteilla.

Ongelman kiertäminen

  1. Avaa resurssitiedosto haluamassasi tekstieditorissa ja etsi 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">  
    
    
  2. 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 muutoksen ansiosta ratkaisupakettitoiminto voi lukea ja tuoda resurssitiedoston. Tämä ongelma ilmenee vain, kun käytät 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) kansiota vasten, joka sisältää YAML-tiedostoja, kuten solution.yml, mutta sijoitat nämä tiedostot 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. Virhesanoma viittaa XML-tiedostoon eikä mainitse YAML:ää, mikä voi olla hämmentävää.

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 commitista tai pac solution clone, kansiorakenne on 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 .

Katso myös