opomba,
Dostop do te strani zahteva pooblastilo. Poskusite se vpisati alispremeniti imenike.
Dostop do te strani zahteva pooblastilo. Poskusite lahko spremeniti imenike.
SolutionPackager je orodje, ki lahko reverzibilno razgradi Microsoft Dataverse stisnjeno rešilno datoteko na več XML datotek in drugih datotek. Te datoteke lahko nato preprosto upravljate z uporabo sistema za nadzor izvorne kode. Naslednji razdelki prikazujejo, kako zagnati orodje in kako ga uporabljati z upravljanimi in neupravljanimi rešitvami.
Pomembno
Orodje SolutionPackager ni več priporočen način za razpakiranje in pakiranje rešitev. Zmožnosti orodja SolutionPackager so vključene v Power Platform CLI. Ukaz pac solution vsebuje veliko glagolov, vključno z unpack, pack, clone, in sync ki vključujejo enake osnovne zmogljivosti orodja SolutionPackager.
Kje lahko najdete orodje SolutionPackager
Orodje SolutionPackager je distribuirano kot del Microsoft. CrmSdk.CoreTools NuGet paket. Če želite namestiti program, sledite tem korakom.
- Prenesite paket. NuGet
- Preimenujte končnico datoteke paketa iz .nupkg v .zip.
- Izvlecite vsebino stisnjene (zip) datoteke.
Poiščite izvedljivo datoteko SolutionPackager.exe v mapi <ime-izvlečene-mape>/contents/bin/coretools. Zaženite program iz mape coretools ali pa to mapo dodajte v svojo pot.
Argumenti ukazne vrstice za orodje SolutionPackager
SolutionPackager je orodje ukazne vrstice, ki ga je mogoče priklicati s parametri, opredeljenimi v naslednji tabeli.
| Argument | Description |
|---|---|
| /dejanje: {Izvleček|Pakiranje} | Obvezno. Dejanje za izvedbo. Dejanje je lahko ekstrahiranje datoteke .zip z rešitvijo v mapo ali zapakiranje mape v datoteko .zip. |
| /zipfile: <pot do datoteke> | Obvezno. Pot in ime datoteke .zip z rešitvijo. Pri ekstrahiranju mora datoteka obstajati in biti berljiva. Pri pakiranju se datoteka nadomesti. |
| /mapa: <pot do mape> | Obvezno. Pot do mape. Ko ekstrahirate, se ta mapa ustvari in izpolni z datotekami komponent. Ta mapa mora pri pakiranju že obstajati in vsebovati predhodno ekstrahirane datoteke komponent. |
| /packagetype: {Neupravljano|Upravljano |Oboje} | Izbirno. Vrsta paketa za obdelavo. Privzeta vrednost je »Neupravljano«. Ta argument je lahko v večini primerov izpuščen, ker je mogoče vrsto paketa brati iz datoteke .zip ali datotek komponent. Ko ekstrahirate in je določena možnost »Oboje«, morata biti prisotni datoteki .zip z upravljano in neupravljano rešitvijo ter obdelani v eno mapo. Ko je določeno pakiranje in je oboje, se datoteke .zip upravljane in neupravljane rešitve ustvarijo iz ene mape. Za več informacij glejte razdelek o delu z upravljanimi in neupravljanimi rešitvami v nadaljevanju tega članka. |
| /allowWrite:{Yes|No} | Izbirno. Privzeta vrednost je Da. Ta argument se uporablja samo med ekstrahiranjem. Ko je določena vrednost /allowWrite:No, orodje izvaja vse postopke, vendar ne more pisati ali brisati datotek. Postopek ekstrahiranja lahko varno ocenite brez prepisovanja ali brisanja obstoječih datotek. |
| /allowDelete:{Yes|No|Prompt} | Izbirno. Privzeta vrednost je »Poziv«. Ta argument se uporablja samo med ekstrahiranjem. Ko je določeno /allowDelete:Yes, se vse datoteke v mapi, ki jo določa parameter /folder, ki niso pričakovane, samodejno izbrišejo. Ko je določeno /allowDelete:No, se brisanja ne izvedejo. Ko je določena vrednost /allowDelete:Prompt, je uporabnik prek konzole pozvan, naj dovoli ali zavrne vse postopke brisanja. Če je določeno /allowWrite:No, se brisanje ne izvede, tudi če je določeno tudi /allowDelete:Yes. |
| /clobber | Izbirno. Ta argument se uporablja samo med ekstrahiranjem. Ko je določena vrednost /clobber, se datoteke, ki imajo nastavljen atribut samo za branje, prepišejo ali izbrišejo. Ko ni določeno, datoteke z atributom samo za branje niso prepisane ali izbrisane. |
| /errorlevel: {Izklopljeno|Napaka|Opozorilo|Informacije|Besedno} | Izbirno. Privzeta vrednost je »Podatki«. Ta argument prikazuje raven dnevniških podatkov, ki jih je treba izpisati. |
| /map: <pot datoteke> | Izbirno. Pot in ime datoteke .xml, ki vsebuje direktive za preslikavo datotek. Kadar jih uporabljate med ekstrahiranjem, se datoteke, ki se običajno berejo iz mape, določene s parametrom /folder, berejo z drugih mest, kot je določeno v datoteki za preslikavo. Med operacijo pakiranja datoteke, ki ustrezajo direktivam, niso zapisane. |
| /nologo | Izbirno. Med izvajanjem skrijte pasico. |
| /log: <pot do datoteke> | Izbirno. Pot do dnevniške datoteke in njeno ime. Če datoteka že obstaja, se ji dodajo novi dnevniški podatki. |
| @ <pot datoteke> | Izbirno. Pot do datoteke, ki vsebuje argumente ukazne vrstice za orodje, in njeno ime. |
| /sourceLoc: <niz> | Izbirno. Ta argument ustvari datoteko z virom predloge in je veljaven samo pri ekstrahiranju. Možne vrednosti so auto ali koda LCID/ISO za jezik, ki ga želite izvoziti. Pri uporabi tega argumenta se viri nizov iz podanih območnih nastavitev ekstrahirajo kot nevtralna datoteka .resx. Če je določena vrednost auto ali pa samo dolga ali kratka oblika stikala, se uporabijo osnovne območne nastavitve ali rešitev. Uporabite lahko kratko obliko ukaza: /src. |
| /localize | Izbirno. Ekstrahirajte ali združite vse vire nizov v datoteke .resx. Uporabite lahko kratko obliko ukaza: /loc. Možnost lokalizacije podpira komponente v skupni rabi za datoteke .resx. Več informacij: Uporaba spletnih virov RESX |
| /SolutionName: <ime> | Izbirno. Edinstveno ime rešitve za pakiranje ali ekstrakcijo, kadar izvorna mapa vsebuje več rešitev pod .solutions/*/solution.yml To je potrebno, kadar je zaznanih več kot ena raztopina. Velja samo za YAML format za upravljanje izvorne kode. Lahko uporabite kratko obliko ukaza: /sn. |
| /remapPluginTypeNames | Izbirno. Ko je določeno, se popolnoma kvalificirana tipna imena vtičnikov preslikajo glede na sestave, vključene v rešitev. Privzeto omogočeno v YAML formatu za upravljanje virne kode. Lahko uporabiš kratko obliko ukaza: /fp. |
Formati datotek za nadzor izvorne kode
SolutionPackager podpira dve postavitvi map pri izločanju in pakiranju rešitev.
XML format (dediščina)
Izvirni format. Metapodatki rešitve so shranjeni v Other\Solution.xml in , Other\Customizations.xmlvse datoteke komponent pa se izvlečejo v ravno hierarhijo map skupaj s temi datotekami. Ta format je privzeti format pri izvleku .zip datoteke brez dodatne konfiguracije.
YAML format za nadzor izvorne kode
Ta format, uveden skupaj z integracijo Dataverse Git, shranjuje metapodatke rešitve kot YAML datoteke, razporejene po strukturirani hierarhiji map. To je format, ki se napiše, ko commitate rešitve z uporabo nativne Git integracije v Power Apps.
Prednosti pred XML formatom
- Ustvarja čistejše in bolj berljive razlike za posamezne komponente v nadzoru izvorne kodo
- Podpira več rešitev v eni mapi repozitorija
- Datoteke aplikacij Canvas in
.msappsodobni tokovi so podprti le v tem formatu - Preslikava imen tipov vtičnikov je privzeto omogočena
Obvezna struktura map
<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]/
Pomembno
Format YAML je samodejno zaznan zaradi prisotnosti podmape, ki solutions/ vsebuje *solution.yml datoteke.
Če so vaše YAML manifest datoteke (solution.yml, solutioncomponents.yml, in tako naprej) postavljene na koren mape namesto pod solutions/<SolutionUniqueName>/, orodje ne zazna YAML formata. Orodje se vrne k XML poti in poroča o zavajajoči napaki glede manjkajoče Customizations.xml. Za informacije o tem, kako odpraviti to težavo, glejte Odpravljanje težav.
Več informacij: Rešitev YAML referenčni format za nadzor izvorne kode
Pravila samodejnega zaznavanja formata
| Pogoj | Uporabljeni format |
|---|---|
solutions/*/solution.yml najden — natanko eno rešitev |
YAML format, kjer se ime rešitve sklepa iz mape |
solutions/*/solution.yml najdeno – več rešitev |
YAML format, kjer /SolutionName je argument potreben |
Podimenik solutions/ ni prisoten |
XML format (dediščina) |
Pakiranje mape v formatu YAML
Naslednji ukazni paketi vključujejo mapo v formatu YAML.
SolutionPackager.exe /action:Pack /zipfile:MySolution.zip /folder:C:\repos\myrepo
Pakiranje iz mape z več rešitvami
Naslednji ukaz zapakira določeno rešitev v mapo z več rešitvami.
SolutionPackager.exe /action:Pack /zipfile:SolutionA.zip /folder:C:\repos\myrepo /SolutionName:SolutionA
Uporaba argumenta ukaza /map
V naslednji razpravi je podrobno opisana uporaba argumenta /map v orodju SolutionPackager.
Datoteke, ki so vgrajene v sistem samodejne gradnje, kot so datoteke .xap Silverlight in sklopi vtičnikov, običajno niso preverjene v nadzoru izvorne kode. Spletni viri so morda že prisotni v nadzoru izvorne kode na lokacijah, ki niso neposredno združljive z orodjem SolutionPackager. Z vključitvijo parametra /map lahko orodje SolutionPackager usmerite k branju in pakiranju takšnih datotek z nadomestnih lokacij in ne iz mape za ekstrahiranje, kot je običajno. Parameter /map mora določati ime in pot do datoteke XML, ki vsebuje direktive za preslikavo. Te direktive naročijo SolutionPackagerju, naj poišče datoteke po imenu in poti ter navede alternativno lokacijo za iskanje ujemajoče se datoteke. Naslednji podatki veljajo enako za vse direktive.
Navedenih je lahko več direktiv, vključno s tistimi, ki ustrezajo enakim datotekam. Direktive, navedene na začetku datoteke, imajo prednost pred direktivami, navedenimi pozneje.
Če je datoteka povezana s katero koli direktivo, jo je treba najti na vsaj enem drugem mestu. Če ni najdenih ustreznih alternativ, SolutionPackager izda napako.
Poti do map in datotek so lahko absolutne ali relativne. Relativne poti se vedno ocenjujejo iz mape, ki jo določi parameter /folder.
Spremenljivke okolja se lahko določijo z uporabo sintakse %variable%.
Nadomestni znak mape "**" se lahko uporabi za pomen "v kateri koli podmapi". Uporabiti ga je mogoče le kot zadnji del poti, na primer: "c:\folderA\**".
Divje kartice za imena datotek se lahko uporabljajo le v oblikah "*.ext" ali "*.*". Drugi vzorci niso podprti.
Tu so opisane tri vrste preslikav direktiv skupaj s primerom, ki prikazuje, kako jih uporabljati.
Preslikava mape
Naslednje informacije vsebujejo podrobne informacije o preslikavi map.
Oblika XML
<Folder map="folderA" to="folderB" />
Opis
Poti do datotek, ki ustrezajo "mapiA", se preklopijo na "mapo B".
Hierarhija podmap pod vsako se mora natančno ujemati.
Nadomestni znaki map niso podprti.
Imen datotek se ne sme določiti.
Primeri
<Folder map="folderA" to="folderB" /> <Folder map="folderA\folderB" to="..\..\folderC\" /> <Folder map="WebResources\subFolder" to="%base%\WebResources" />
Preslikava iz datoteke v datoteko
Naslednje informacije vsebujejo več podrobnosti o preslikavi datotek v datoteke.
Oblika XML
<FileToFile map="path\filename.ext" to="path\filename.ext" />
Opis
Vsaka datoteka, ki ustreza parametru map , se prebere iz imena in poti, določene v parametru to .
Za parameter map:
Določiti morate ime datoteke. Pot ni obvezna. Če pot ni določena, se lahko povežejo datoteke iz katere koli mape.
Nadomestni znaki imen datotek niso podprti.
Nadomestni znak za mapo je podprt.
Za parameter
to:Določiti morate ime datoteke in pot do nje.
Ime datoteke se lahko razlikuje od imena v parametru
map.Nadomestni znaki imen datotek niso podprti.
Nadomestni znak za mapo je podprt.
Primeri
<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" />
V zgornjem primeru paketa NuGet se datoteka cr886_PluginPackageTest.nupkg ne prepiše, če datoteka že obstaja na določeni lokaciji.
Preslikava datoteke v pot
V nadaljevanju so navedene podrobne informacije o preslikavi iz datoteke v pot.
Oblika XML
<FileToPath map="path\filename.ext" to="path" />
Opis
Vsaka datoteka, ki ustreza parametru map, se prebere iz poti, določene v parametru to.
Za parameter map:
Določiti morate ime datoteke. Pot ni obvezna. Če pot ni določena, se lahko povežejo datoteke iz katere koli mape.
Nadomestni znaki za ime datoteke so podprti.
Nadomestni znak za mapo je podprt.
Za parameter to:
Določiti morate pot.
Nadomestni znak za mapo je podprt.
Imena datoteke ne smete določiti.
Primeri
<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" />
Vzorčna preslikava
Naslednji vzorec kode XML prikazuje celotno datoteko preslikave, ki orodju SolutionPackager omogoča branje poljubnega spletnega vira in dveh privzetih ustvarjenih zbirov iz projekta Developer Toolkit, imenovanega 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>
Upravljane in neupravljane rešitve
Datoteko (.zip) s stisnjeno rešitvijo Dataverse lahko izvozite v eno od dveh vrst, kot je prikazano tukaj.
Upravljana rešitev
Dokončana rešitev, pripravljena za uvoz v organizacijo. Ko so komponente uvožene, jih ni mogoče dodajati ali odstranjevati, čeprav omogočajo dodatne prilagoditve. To je priporočljivo, ko je razvoj rešitve končan.
Neupravljana rešitev
Odprta rešitev brez omejitev glede tega, kaj lahko dodate, odstranite ali spremenite. To je priporočljivo med razvojem rešitve.
Oblika datoteke s stisnjeno rešitvijo se bo razlikovala glede na vrsto, in sicer bo upravljana ali neupravljana. Orodje SolutionPackager lahko obdela datoteke s stisnjeno rešitvijo obeh vrst. Vendar orodje ne more pretvoriti enega tipa v drugega. Edini način pretvorbe datotek z rešitvami v drugo vrsto, na primer iz neupravljane v upravljano, je, da uvozite datoteko .zip z neupravljano rešitvijo v strežnik Dataverse in nato izvozite rešitev kot upravljano rešitev.
SolutionPackager lahko obdela datoteke .zip z neupravljano in upravljano rešitvijo kot kombiniran niz prek parametra /PackageType:Both. Če želite izvesti ta postopek, morate svojo rešitev izvoziti dvakrat kot vsako vrsto in poimenovati datoteke .zip, kot sledi.
Neupravljana datoteka .zip: AnyName.zip
Upravljana datoteka .zip: AnyName_managed.zip
Orodje bo predpostavljalo prisotnost upravljane datoteke .zip v isti mapi z neupravljano datoteko in ekstrahiralo obe datoteki v eno mapo, pri čemer bo ohranilo razlike, kjer obstajajo tako upravljane kot neupravljane komponente.
Ko je rešitev ekstrahirana tako kot neupravljana kot tudi upravljana, je mogoče iz te posamezne mape zapakirati obe ali vsako vrsto posebej s parametrom /PackageType, da določite, katero vrsto želite ustvariti. Če določite obe datoteki, bosta ustvarjeni dve datoteki .zip z uporabo zgoraj navedenega načina poimenovanja. Če parameter /PackageType manjka pri pakiranju iz dvojne, upravljane in neupravljane, mape, je privzeto ustvarjena ena neupravljana datoteka .zip.
Odpravljanje težav
Sporočilo, prikazano pri uporabi Visual Studio za urejanje datotek virov
Če uporabite Visual Studio za urejanje resource fsiles, ki jih je ustvaril paket rešitve, lahko ob prepakiranju prejmete sporočilo, podobno temu: "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." To se zgodi, ker Visual Studio zamenja metapodatkovne oznake datoteke z podatkovnimi oznakami.
Rešitev
Odprite datoteko virov v svojem priljubljenem urejevalniku besedil ter poiščite in posodobite naslednje oznake:
<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">Spremenite ime vozlišča iz
<data>v<metadata>.Na primer ta niz:
<data name="Source LCID" xml:space="preserve"> <value>1033</value> </data>Se spremeni v:
<metadata name="Source LCID" xml:space="preserve"> <value>1033</value> </metadata>To omogoča orodju za pakiranje rešitev branje in uvoz datoteke virov. Ta težava je bila opažena le pri uporabi urejevalnika virov Visual Studio.
Napaka: "Ni mogoče najti zahtevane datoteke ...\Other\Customizations.xml" z mapo YAML
Ta napaka se pojavi, ko zaženete SolutionPackager (ali pac solution pack) nad mapo, ki vsebuje YAML datoteke, kot je solution.yml, vendar so te datoteke postavljene na koren mape in ne v zahtevano podmapo.solutions/<SolutionUniqueName>/
Vzrok: Orodje zazna YAML format za nadzor izvorne kode tako, da poišče podmapo solutions/ z *solution.yml datotekami. Ko ta imenik ni prisoten, orodje tiho preide nazaj na XML (legacy) format in pričakuje Other\Customizations.xml. Nastalo sporočilo o napaki se nanaša na XML datoteko in ne omenja YAML, kar je zavajajoče.
Popravek: Preuredite mapo tako, da bodo datoteke manifesta YAML pod pravilnimi potmi:
<rootFolder>/
solutions/<YourSolutionUniqueName>/ ← move solution.yml here
solution.yml
solutioncomponents.yml
rootcomponents.yml
missingdependencies.yml
publishers/<YourPublisherUniqueName>/
publisher.yml
Če si mapo pridobil iz Git integracijskega commita ali pac solution clone, bi morala biti struktura map že pravilna. Mapa, ki vsebuje le najvišje YAML datoteke brez podmape solutions/ , predstavlja nepopoln izvleček in je ni mogoče neposredno zapakirati.
Opozorilo: komponenta, deklarirana v rootcomponents.yml, nima izvornih datotek
To opozorilo se pojavi, ko je komponenta, kot je canvas aplikacija, navedena v rootcomponents.yml , vendar v pričakovani mapi komponent ni ustreznih izvornih datotek (na primer canvasapps/<schema-name>/).
Učinek: Orodje še vedno uspe (izhodna koda 0) in ustvari veljavno .zip datoteko, vendar je deklarirana komponenta izpuščena iz pakirane rešitve.
Vzrok: Mapa je bila ustvarjena z delno ekstrakcijo ali pa izvorne datoteke komponente niso bile vključene v repozitorij. Na primer, shranjene so bile le datoteke manifesta rešitve, ne pa tudi sama aplikacija Canvas.
Popravek: Poskrbite, da imajo vsi deklarirani rootcomponents.yml elementi ustrezne izvorne datoteke v mapi. Za canvas aplikacije mora datoteka .msapp obstajati pod .canvasapps/<schema-name>/ Če manjkajo kakšne datoteke, ponovno izvozite celotno rešitev iz Dataverse in jo ponovno razpakirajte ali uporabite pac solution clone za pridobitev popolne izvlečke.