Lahendusepakkija tööriist

SolutionPackager on tööriist, mis suudab pöörduvalt lagundada Microsoft Dataverse'i tihendatud lahendusfaili mitmeks XML-failiks ja muuks failiks. Seejärel saate neid faile hõlpsalt hallata versioonikontrollisüsteemi abil. Järgmistes jaotistes selgitatakse, kuidas tööriista käitada ja kuidas tööriista hallatavate ja mittehallatavate lahendustega kasutada.

Oluline

Lahenduste pakkimiseks ja lahtipakkimiseks ei ole enam soovitatav tööriist SolutionPackager. SolutionPackageri tööriista võimalused on integreeritud Power Platform CLI-sse. Käsul pac solution on palju tegusõnu, sealhulgas unpack, pack, clone, ja sync mis sisaldavad samu aluseks olevaid võimeid nagu SolutionPackager tööriistal.

Lahendusepakkija tööriista otsimine

SolutionPackager tööriist on levitatud osana Microsoft süsteemist. CrmSdk.CoreTools NuGet pakett. Programmi installimiseks järgige neid samme.

  1. Laadige alla pakett. NuGet
  2. Nimeta paketi failinime laiend ümber .nupkg-ist .zip-iks.
  3. Pakkige pakitud (zip) faili sisu lahti.

Leidke SolutionPackager.exe käivitatav fail kaustast <extracted-folder-name>/contents/bin/coretools. Käivita programm kaustast coretools või lisa see kaust oma teele (PATH).

Lahendusepakkija käsurea argumendid

Lahendusepakkija on käsurea tööriist, mida saab kasutada järgmises tabelis määratletud parameetritega.

Argument Kirjeldus
/action: {Extract|Pakett} Nõutav. Toiming sooritamiseks. Toiming võib olla lahenduse ZIP-faili ekstraktimine kausta või kausta pakkimine ZIP-failiks.
/zipfile: <failitee> Nõutav. Lahenduse ZIP-faili tee ja nimi. Ekstraktimisel peab fail olemas olema ja olema loetav. Pakkimisel fail asendatakse.
/folder: <kausta tee> Nõutav. Kausta tee. Lahti pakkimisel luuakse see kaust ja täidetakse komponendi failidega. Pakkimisel peab see kaust juba olemas olema ja sisaldama varem lahti pakitud komponendi faile.
/packagetype: {Unmanaged|Managed|Mõlemad} Valikuline. Töödeldava paketi tüüp. Vaikeväärtus on Mittehallatav. See argument võidakse enamikul juhtudel välja jätta, kuna paketi tüüpi saab lugeda ZIP-faili või komponendi failide seest. Kui lahti pakkimine ja väärtus Mõlemad on määratud, peavad hallatava ja mittehallatava lahenduse ZIP-failid olema olemas ja neid töödeldakse ühte kausta. Kui pakkimine on määratud ja „Mõlemad”, luuakse hallatava ja mittehallatava lahenduse .zip-failid ühest kaustast. Lisateavet leiate selle artikli hilisemast jaotisest hallatavate ja mittehallatavate lahendustega töötamise kohta.
/allowWrite:{Yes|Ei} Valikuline. Vaikeväärtus on Jah. Seda argumenti kasutatakse ainult lahti pakkimisel. Kui /allowWrite:No on määratud, sooritab tööriist kõik toimingud, kuid ei saa faile kirjutada ega kustutada. Lahtipakkimise toimingut saab ohutult hinnata ilma olemasolevaid faile üle kirjutamata või kustutamata.
/allowDelete:{Yes|No|Küsi} Valikuline. Vaikeväärtus on Küsi. Seda argumenti kasutatakse ainult lahti pakkimisel. Kui on määratud /allowDelete:Yes, kustutatakse automaatselt kõik parameetriga /folder määratud kaustas olevad ebasoovitavad failid. Kui on määratud /allowDelete:No, siis kustutamist ei toimu. Kui /allowDelete:Küsi on määratud, palutakse kasutajal konsooli kaudu lubada või keelata kõik kustutustoimingud. Kui on määratud /allowWrite:No, siis kustutamist ei toimu isegi siis, kui on määratud ka /allowDelete:Yes.
/clobber Valikuline. Seda argumenti kasutatakse ainult lahti pakkimisel. Kui/clobber on määratud, kirjutatakse kirjutuskaitstud atribuudiga failid üle või kustutatakse. Kui neid pole täpsustatud, ei kirjutata ega kustutata ainult lugemise atribuutiga faile.
/errorlevel: {Väljas|Viga|Hoiatus|Info|Paljusõnaline} Valikuline. Vaikeväärtus on Teave. See argument näitab teabe väljundisse logimise taset.
/map: <failitee> Valikuline. Faili vastenduse direktiive sisaldava XML-faili tee ja nimi. Lahti pakkimisel loetakse tavaliselt parameetriga /kaust määratud kaustast loetavaid faile erinevatest asukohtadest, nagu on määratud vastendusfailis. Paki operatsiooni ajal ei kirjutata faile, mis vastavad direktiividele.
/nologo Valikuline. Keelake bänner käitusajal.
/log: <failitee> Valikuline. Logifaili tee ja nimi. Kui fail on juba olemas, lisatakse failile uus logimisteave.
@ <failitee> Valikuline. Tööriista käsurea argumente sisaldava faili tee ja nimi.
/sourceLoc: <string> Valikuline. See argument loob malli ressursifaili ja kehtib ainult lahti pakkimisel.

Võimalikud väärtused on auto või LCID/ISO kood selle keele jaoks, mida soovite eksportida. Selle argumendi kasutamisel pakitakse antud lokaadi stringiressursid lahti neutraalse RESX-failina. Kui on määratud auto või ainult lüliti pikk või lühike kuju, kasutatakse aluslokaati või lahendust. Saate kasutada käsu lühivormi: /src.
/lokaliseeri Valikuline. Ekstraktige või ühendage kõik stringiressursid .resx-failidesse. Saate kasutada käsu lühivormi: /loc. Lokaliseerimissuvand toetab .resx failide ühiskomponente. Lisateave: RESX-i veebiressursside kasutamine
/SolutionName: <nimi> Valikuline. Lahenduse unikaalne nimi, mida pakkida või välja võtta, kui lähtekaust sisaldab mitut lahendust alla solutions/*/solution.yml. Vajalik, kui tuvastatakse rohkem kui üks lahendus. Kehtib ainult YAML lähtekoodihalduse formaadile. Võid kasutada käsu lühendit: /sn.
/remapPluginTypeNames Valikuline. Kui see on määratud, kaardistatakse plug-in täielikult kvalifitseeritud tüübinimed lahenduses sisalduvate kokkupanekute põhjal. Vaikimisi lubatud YAML lähtekoodihalduse formaadis. Võid kasutada käsu lühendit: /fp.

Lähtekoodihalduse failivormingud

SolutionPackager toetab lahenduste lahtivõtmisel ja pakkimisel kahte kaustapaigutust.

XML-formaat (pärand)

Algne formaat. Lahenduse metaandmed salvestatakse ja Other\Solution.xml, Other\Customizations.xml ning kõik komponendifailid eraldatakse koos nende failidega ühtlasesse kaustahierarhiasse. See formaat on vaikimisi formaat, kui faili lahti .zip pakkida ilma täiendava seadistuseta.

YAML lähtekoodihalduse formaat

Lisatud koos Dataverse Git integratsiooniga, salvestab see formaat lahenduse metaandmeid YAML-failidena, mis on jaotatud struktureeritud kaustahierarhiasse. See on formaat, mis kirjutatakse, kui sa panustad lahendusi natiivse Git-integratsiooni abil Power Apps'is.

Eelised XML-formaadi ees

  • Annab puhtamad ja loetavamad komponendipõhised diferentsiaalid lähtekoodihalduses
  • Toetab mitut lahendust ühes hoidla kaustas
  • Canvas'i rakendusfailid .msapp ja kaasaegsed vood on toetatud ainult selles formaadis
  • Plug-in tüübi nimede ümberkaardistamine on vaikimisi lubatud

Nõutav kaustastruktuur

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

Oluline

YAML-formaat tuvastatakse automaatselt alamkaustaga solutions/ , mis sisaldab *solution.yml faile. Kui sinu YAML-manifesti failid (solution.yml, solutioncomponents.yml, jne) on paigutatud kausta juurele, mitte alla solutions/<SolutionUniqueName>/, ei tuvasta tööriist YAML-vormingut. Tööriist naaseb XML-teele ja teatab eksitavast veast puuduva Customizations.xmlkohta. Vaata tõrkeotsingut , et saada infot, kuidas seda probleemi lahendada.

Lisainfo: Lahendus YAML lähtekoodi haldusvormingu viide

Vormindamise automaatse tuvastuse reeglid

Tingimus Kasutatud formaat
solutions/*/solution.yml leitud — täpselt üks lahendus YAML-formaat, kus lahenduse nimi tuletatakse kaustast
solutions/*/solution.yml Leitud — mitmed lahendused YAML-formaat, kus argument /SolutionName on vajalik
Alamkataloogi ei solutions/ ole XML-formaat (pärand)

YAML-formaadis kausta pakkimine

Järgmine käsk pakib YAML-formaadi kausta.

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

Pakkimine mitme lahendusega kaustast

Järgmine käsk pakib määratud lahenduse mitme lahenduse kausta.

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

Kasutage käsu argumenti /kaart

Järgnevalt kirjeldatakse argumendi /kaart kasutamist tööriistas Lahendusepakkija.

Automatiseeritud koostesüsteemis loodud faile (nt. xap Silverlighti failid ja lisandmoodulite komplektid) ei kontrollita tavaliselt lähtekeskkonna juhtimises. Veebiressursid võivad juba olla versioonikontrollis asukohtades, mis ei ühildu otseselt SolutionPackager tööriistaga. Parameetri /kaart kaasamisega saab Lahendusepakkija tööriista suunata selliseid faile lugema ja pakkima alternatiivsetest asukohtadest, mitte kaustast Lahti pakkimine, nagu seda tavaliselt tehakse. Parameeter /map peab määrama kaardistusdirektiive sisaldava XML-faili nime ja tee. Need direktiivid annavad lahenduspaketile juhise leida failidele vasteid nime ja tee järgi ning näitavad sobiva faili leidmiseks alternatiivset asukohta. Järgnev teave kehtib kõigi direktiivide kohta võrdselt.

  • Võib olla loetletud mitu direktiivi, sealhulgas need, mis vastavad identsetele failidele. Faili alguses loetletud direktiivid on hilisemates direktiivides ülimuslikud.

  • Kui fail on vastendatud mis tahes direktiivile, tuleb see leida vähemalt ühest alternatiivsest asukohast. Kui sobivaid alternatiive ei leita, kuvab lahenduspakkija vea.

  • Kausta ja faili teed võivad olla absoluutsed või suhtelised. Suhtelisi teid hinnatakse alati parameetriga /kaust määratud kaustast.

  • Keskkonnamuutujaid saab määrata süntaksi %variable% abil.

  • Kausta wildcard "**" võib tähendada "mis tahes alamkaustas". Seda saab kasutada ainult tee lõpuosana, näiteks: "c:\folderA\**".

  • Failinime wildkaarte võib kasutada ainult vormides "*.ext" või "*.*". Muud mustrit ei toetata.

    Siin kirjeldatakse kolme tüüpi direktiivide vastendusi ja näidet, mis selgitab, kuidas neid kasutada.

Kausta vastendamine

Järgnev teave annab üksikasjalikku teavet kaustade kaardistamise kohta.

XML-vorming

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

Kirjeldus

Failiteed, mis vastavad "kaustaA"-le, vahetatakse "kaustaks B".

  • Alamkaustade hierarhia peab täpselt kattuma.

  • Kausta metamärke ei toetata.

  • Faili nimesid ei saa määrata.

    Näited

    <Folder map="folderA" to="folderB" />  
    <Folder map="folderA\folderB" to="..\..\folderC\" />  
    <Folder map="WebResources\subFolder" to="%base%\WebResources" />  
    

Faili sihtkoht faili vastendamiseks

Järgnev teave annab failidevahelise vastenduse kohta lisateavet.

XML-vorming

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

Kirjeldus

Kõik parameetrile map vastavad failid loetakse parameetris to määratud nime ja tee alt.

Parameetri map jaoks:

  • Faili nimi tuleb määrata. Tee on valikuline. Kui teed pole määratud, võidakse vastendada mis tahes kausta failid.

  • Failinime metamärke ei toetata.

  • Kausta metamärki toetatakse.

    Parameetri to jaoks:

  • Faili nimi ja tee tuleb määrata.

  • Faili nimi võib erineda parameetri map nimest.

  • Failinime metamärke ei toetata.

  • Kausta metamärki toetatakse.

Näited

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

Ülaltoodud paketi näites ei kirjutata cr886_PluginPackageTest.nupkg faili üle, kui see on määratud asukohas juba olemas. NuGet

Fail tee vastendamiseks

Järgnevalt antakse üksikasjalikku teavet fail-teeks vastendamise kohta.

XML-vorming

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

Kirjeldus

Kõiki parameetrile map vastavaid faile loetakse parameetris to määratud tee järgi.

Parameetri map jaoks:

  • Faili nimi tuleb määrata. Tee on valikuline. Kui teed pole määratud, võidakse vastendada mis tahes kausta failid.

  • Faili nime metamärke toetatakse.

  • Kausta metamärki toetatakse.

Parameetri to jaoks:

  • Tee tuleb määrata.

  • Kausta metamärki toetatakse.

  • Faili nime ei tohi määrata.

    Näited

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

Vastendamise näide

Järgmises XML-koodi näites kuvatakse täielik vastendusfail, mis võimaldab Lahendusepakkija tööriistal lugeda kõiki veebiressursse ja kahte vaikimisi loodud komplekti arendustööriistakomplekti projektist nimega CRMDevTookitSample.

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

Hallatavad ja mittehallatavad lahendused

Dataverse'i tihendatud lahenduse (.zip) faili saab eksportida ühte kahest tüübist, nagu siin näidatud.

Hallatud lahendus
Lõpetatud lahendus, mis on organisatsiooni importimiseks valmis. Kui komponente on imporditud, ei saa neid lisada ega eemaldada, kuigi need võivad soovi korral võimaldada täiendavat kohandamist. See on soovitatav, kui lahenduse arendamine on lõpule jõudnud.

Haldamata lahendus
Avatud lahendus, mis ei piira lisamise, eemaldamise ega muutmise võimalusi. See on lahenduse arendamisel soovitatav.

Tihendatud lahendusefaili vorming on selle tüübi põhjal erinev, kas hallatav või mittehallatav. Lahendusepakkija saab töödelda mõlemat tüüpi tihendatud lahendusefaile. Kuid tööriist ei saa üht tüüpi teisendada. Ainus viis lahendusefailide teisendamiseks muuks tüübiks (nt mittehallatavast tüübist hallatavaks tüübiks) on importida mittehallatav lahenduse ZIP-fail Dataverse'i serverisse ja seejärel eksportida lahendus hallatava lahendusena.

Lahendusepakkija saab töödelda mittehallatavaid ja hallatavaid lahenduse ZIP-faile kombineeritud komplektina parameetri /PaketiTüüp:Mõlemad kaudu. Selle toimingu sooritamiseks tuleb teie lahendus eksportida kaks korda iga tüübina, nimetades ZIP-failid järgmiselt.

Mittehallatav ZIP-fail: MisTahesNimi.zip

Hallatav ZIP-fail: MisTahesNimi_hallatav.zip

Tööriist eeldab, et hallatav ZIP-fail on mittehallatava failiga samas kaustas ja pakib mõlemad failid lahti ühte kausta, säilitades hallatavate ja mittehallatavate komponentide erinevused.

Kui lahendus on pakitud lahti nii mittehallatava kui ka hallatava lahendusena, saab sellest ühest kaustast pakkida mõlemad tüübid või iga tüübi eraldi, kasutades parameetrit /PaketiTüüp, et määrata, millist tüüpi luua. Mõlema faili määramisel luuakse kaks .zip-faili, kasutades ülaltoodud nimetamiskonventsiooni. Kui kahest hallatavast ja mittehallatavast kaustast pakkimisel puudub parameeter /PaketiTüüp, luuakse vaikimisi üks mittehallatav ZIP-fail.

Tõrkeotsing

Sõnum kuvatakse Visual Studio kasutamisel ressursifailide muutmiseks

Kui kasutad Visual Studio ressursifailide muutmiseks, mille on loonud lahenduse pakendaja, võid ümberpakkimisel saada teate, mis on sarnane sellele: "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." See juhtub, sest Visual Studio asendab ressursifaili metaandmete sildid andmesiltidega.

Vastukaal

  1. Avage ressursifail oma lemmiktekstiredaktoris ning otsige üles ja värskendage järgmisi silte:

    <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. Muutke sõlme nimi <data> nimeks <metadata>.

    Näiteks see string:

    <data name="Source LCID" xml:space="preserve">  
      <value>1033</value>  
    </data>  
    
    

    Muudetud:

    <metadata name="Source LCID" xml:space="preserve">  
      <value>1033</value>  
    </metadata>  
    
    

    See võimaldab Lahenduspakkijal ressursifaili lugeda ja importida. Seda probleemi on täheldatud ainult Visual Studio Resource redaktori kasutamisel.

Viga: "Vajalikku faili ei leia ...\Other\Customizations.xml" YAML kaustaga

See viga tekib, kui käivitad SolutionPackageri (või pac solution pack) kaustas, mis sisaldab YAML-faile nagu solution.yml, kuid need failid paigutatakse kausta juurele, mitte nõutavasse solutions/<SolutionUniqueName>/ alamkausta.

Põhjus: Tööriist tuvastab YAML lähtekoodihalduse formaadi, otsides alamkausta solutions/ , mis sisaldab *solution.yml faile. Kui see kataloog puudub, naaseb tööriist vaikselt XML (legacy) formaati ja ootab Other\Customizations.xml. Tulemuseks olev veateate viitab XML-failile ega maini YAML-i, mis on eksitav.

Parandus: Korralda kaust nii, et YAML manifesti failid oleksid õigete radade all:

<rootFolder>/
  solutions/<YourSolutionUniqueName>/   ← move solution.yml here
    solution.yml
    solutioncomponents.yml
    rootcomponents.yml
    missingdependencies.yml
  publishers/<YourPublisherUniqueName>/
    publisher.yml

Kui said kausta Git integratsiooni commit'ist või pac solution clone, peaks kausta struktuur juba õige olema. Kaust, mis sisaldab ainult tipptasemel YAML faile ilma solutions/ alamkaustata, on ebatäielik ekstrakt ja seda ei saa otse pakkida.

Hoiatus: rootcomponents.yml-s deklareeritud komponent ei sisalda lähtefaile

See hoiatus ilmub siis, kui komponent, näiteks lõuendi rakendus, on nimekirjas rootcomponents.yml , kuid oodatud komponendikaustas ei ole vastavaid lähtefaile (näiteks canvasapps/<schema-name>/).

Mõju: Tööriist õnnestub siiski (väljumiskood 0) ja annab kehtiva .zip faili, kuid deklareeritud komponent jäetakse pakendatud lahendusest välja.

Põhjus: Kaust genereeriti osalise väljavõtmise teel või komponendi lähtefaile ei lisatud hoidlasse. Näiteks ainult lahendusmanifesti failid olid kinnitatud, mitte Canvasi rakendus ise.

Parandus: Veendu, et kõik deklareeritud rootcomponents.yml komponendid sisaldavad kaustas vastavaid lähtefaile. Lõuendirakenduste puhul peab fail .msapp eksisteerima all canvasapps/<schema-name>/. Kui mõni fail puudub, ekspordi kogu lahendus Dataverse'ist uuesti ja avage see uuesti, või kasutage pac solution clone seda täieliku väljavõtte saamiseks.

Vt ka