Poznámka
Na prístup k tejto stránke sa vyžaduje oprávnenie. Môžete sa skúsiť prihlásiť alebo zmeniť adresáre.
Na prístup k tejto stránke sa vyžaduje oprávnenie. Môžete skúsiť zmeniť adresáre.
SolutionPackager je nástroj, ktorý dokáže reverzibilne rozložiť komprimovaný súbor riešenia Microsoft Dataverse na viacero XML súborov a ďalšie súbory. Tieto súbory potom môžete jednoducho spravovať pomocou systému správy zdrojového kódu. Nasledujúce sekcie vám ukážu, ako nástroj spustiť a ako ho používať pri spravovaných a nespravovaných riešeniach.
Dôležité
Nástroj SolutionPackager už nie je odporúčaným spôsobom na rozbaľovanie a balenie riešení. Schopnosti nástroja SolutionPackager sú začlenené do Power Platform CLI. Príkaz pac solution obsahuje mnoho slovies vrátane unpack, pack, clone, ktoré sync zahŕňajú rovnaké základné schopnosti nástroja SolutionPackager.
Kde nájdete nástroj SolutionPackager
Nástroj SolutionPackager je distribuovaný ako súčasť Microsoft. CrmSdk.CoreTools NuGet balík. Ak chcete nainštalovať program, postupujte podľa týchto krokov.
- Stiahnite si balík. NuGet
- Premenujte príponu súboru balíka z .nupkg na .zip.
- Rozbaľte obsah komprimovaného (zip) súboru.
V priečinku <názov extrahovaného priečinka>/contents/bin/coretools vyhľadajte spustiteľný súbor SolutionPackager.exe. Spustite program z priečinka coretools alebo pridajte tento priečinok do vašej cesty PATH.
Argumenty príkazového riadka SolutionPackager
SolutionPackager je nástroj príkazového riadka, ktorý je možné vyvolať pomocou parametrov uvedených v nasledujúcej tabuľke.
| Argument | Description |
|---|---|
| /action: {Extract|Zbaliť} | Povinné. Akcia, ktorú treba vykonať. Akcia môže byť buď extrahovať súbor .zip riešenia do priečinka, alebo zabaliť priečinok do súboru .zip. |
| /zipfile: <cesta k súboru> | Povinné. Cesta a názov súboru .zip riešenia. Pri extrahovaní musí súbor existovať a byť čitateľný. Pri balení sa súbor nahradí. |
| /folder: <cesta k priečinku> | Povinné. Cesta k priečinku. Pri rozbalení sa tento priečinok vytvorí a zaplní sa súbormi komponentov. Pri balení musí tento priečinok už existovať a obsahovať predtým extrahované súbory komponentov. |
| /packagetype: {Nespravované|Spravované|Obaja} | Voliteľné. Typ balíka na spracovanie. Predvolená hodnota je Unmanaged. Tento argument možno vo väčšine prípadov vynechať, pretože typ balíka je možné prečítať z vnútra súboru .zip alebo komponentov. Keď je pri extrahovaní a zadané Both, musia byť prítomné .zip súbory spravovaného a nespravovaného riešenia a musia byť spracované do jedného priečinka. Pri balení a zadaní možnosti Both sa súbory .zip spravovaného aj nespravovaného riešenia vytvoria z jedného priečinka. Ďalšie informácie nájdete v časti o práci so spravovanými a nespravovanými riešeniami ďalej v tomto článku. |
| /allowWrite:{Yes|No} | Voliteľné. Predvolená hodnota je Áno. Tento argument sa používa iba počas extrakcie. Ak je zadané /allowWrite:No, nástroj vykoná všetky operácie, ale zabráni zápisu alebo vymazaniu akýchkoľvek súborov. Operáciu extrakcie je možné bezpečne vyhodnotiť bez toho, aby došlo k prepísaniu alebo vymazaniu existujúcich súborov. |
| /allowDelete:{Yes|No|Prompt} | Voliteľné. Predvolená hodnota je Prompt. Tento argument sa používa iba počas extrakcie. Ak je zadané /allowDelete:Yes, všetky súbory nachádzajúce sa v priečinku určenom parametrom /folder, ktoré nie sú očakávané, sa automaticky odstránia. Ak je zadané /allowDelete:No, nevykoná sa žiadne odstránenie. Ak je zadané /allowDelete:Prompt, je používateľ prostredníctvom konzoly vyzvaný, aby povolil alebo zakázal všetky operácie mazania. Ak je zadané /allowWrite:No, nevykoná sa žiadne odstránenie, a to ani v prípade, že je zadané aj /allowDelete:Yes. |
| /clobber | Voliteľné. Tento argument sa používa iba počas extrakcie. Ak je zadané /clobber, súbory, ktoré majú nastavenú atribúty len na čítanie, sa prepíšu alebo odstránia. Ak nie je špecifikovaný, súbory s atribútom iba na čítanie nie sú prepísané ani vymazané. |
| /errorlevel: {Vypnuté|Chyba|Upozornenie|Informácie|Výrečné} | Voliteľné. Predvolená hodnota je Info. Tento argument naznačuje úroveň protokolovaných informácií na výstupe. |
| /map: <cesta k súboru> | Voliteľné. Cesta a názov súboru .xml, ktorý obsahuje smernice na mapovanie súborov. Ak sa používa počas extrakcie, súbory obvykle načítané zvnútra priečinka určeného parametrom /folder sa načítajú z alternatívnych umiestnení určených v mapovacom súbore. Počas packovej operácie sa súbory, ktoré zodpovedajú direktívam, nezapisujú. |
| /nologo | Voliteľné. Potlačenie bannera za behu. |
| /log: <cesta k súboru> | Voliteľné. Cesta a názov k súboru denníka. Ak súbor už existuje, k súboru sa pripoja nové informácie o protokolovaní. |
| @ <cesta k súboru> | Voliteľné. Cesta a názov súboru, ktorý obsahuje argumenty príkazového riadku pre nástroj. |
| /sourceLoc: <reťazec> | Voliteľné. Tento argument generuje súbor zdroja šablóny a je platný iba pri výpise. Možné hodnoty sú auto alebo kód LCID/ISO pre jazyk, ktorý chcete exportovať. Ak sa použije tento argument, zdroje reťazca z daného miestneho nastavenia sa extrahujú ako neutrálny súbor .resx. Ak je zadané auto alebo je zadaná iba dlhá alebo krátka forma prepínača, použije základné miestne nastavenie alebo riešenie. Môžete použiť skrátenú formu príkazu: /src. |
| /localize | Voliteľné. Extrakcia alebo zlúčenie všetkých reťazcových zdrojov do súborov .resx. Môžete použiť skrátenú formu príkazu: /loc. Možnosť lokalizácie podporuje zdieľané komponenty pre súbory .resx. Viac informácií: Používanie webových zdrojov RESX |
| /Meno riešenia: <meno> | Voliteľné. Jedinečný názov riešenia na zabalenie alebo extrahovanie, keď zdrojový priečinok obsahuje viacero riešení pod .solutions/*/solution.yml Potrebné, keď je detegovaných viac ako jedno riešenie. Platí len pre formát správy YAML zdrojového kódu. Môžete použiť skrátenú formu príkazu: /sn. |
| /remapPluginTypeNames | Voliteľné. Keď je to špecifikované, plne kvalifikované typy pluginov sa premapujú na základe zostav zahrnutých v riešení. Predvolene povolené vo formáte YAML správy zdrojového kódu. Môžete použiť skrátenú formu príkazu: /fp. |
Formáty súborov na správu zdrojového kódu
SolutionPackager podporuje dve rozloženia priečinkov pri extrakcii a balení riešení.
XML formát (dedičstvo)
Pôvodný formát. Metadáta riešenia sú uložené v Other\Solution.xml a Other\Customizations.xml, a všetky súbory komponentov sa extrahujú do plochej hierarchie priečinkov spolu s týmito súbormi. Tento formát je predvolený pri extrahovaní súboru .zip bez ďalšej konfigurácie.
YAML formát správy zdrojového kódu
Tento formát, zavedený spolu s integráciou Dataverse Git, ukladá metadáta riešenia ako YAML súbory rozdelené do štruktúrovanej hierarchie priečinkov. Je to formát, ktorý sa píše, keď commitujete riešenia pomocou natívnej integrácie Git v Power Apps.
Výhody oproti formátu XML
- Vytvára čistejšie a čitateľnejšie diferenciály pre jednotlivé komponenty v riadení zdrojového kódu
- Podporuje viacero riešení v jednom priečinku repozitára
- Súbory aplikácií
.msappCanvas a moderné toky sú podporované iba v tomto formáte - Premapovanie typov pluginov je predvolene povolené
Požadovaná štruktúra priečinkov
<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]/
Dôležité
Formát YAML je automaticky detegovaný prítomnosťou podpriečinka obsahujúceho solutions/*solution.yml súbory.
Ak sú vaše YAML manifestové súbory (solution.yml, solutioncomponents.yml, a podobne) umiestnené na koreň priečinka namiesto pod solutions/<SolutionUniqueName>/, nástroj nedetekuje formát YAML. Nástroj sa vracia k XML ceste a hlási zavádzajúcu chybu o chýbajúcej Customizations.xml. Pozrite si Riešenie problémov pre informácie o tom, ako tento problém vyriešiť.
Viac informácií: Solution YAML zdrojový formát
Pravidlá automatickej detekcie formátu
| Podmienka | Použitý formát |
|---|---|
solutions/*/solution.yml Nájdené — presne jedno riešenie |
YAML formát, kde sa názov riešenia odvodzuje z priečinka |
solutions/*/solution.yml nájdené – viaceré riešenia |
YAML formát, kde je požadovaný /SolutionName argument |
Neexistuje žiadny solutions/ podadresár. |
XML formát (dedičstvo) |
Balenie priečinka vo formáte YAML
Nasledujúci príkazový balík obsahuje priečinok vo formáte YAML.
SolutionPackager.exe /action:Pack /zipfile:MySolution.zip /folder:C:\repos\myrepo
Balenie z priečinka s viacerými riešeniami
Nasledujúci príkaz zabalí špecifikované riešenie do priečinka s viacerými riešeniami.
SolutionPackager.exe /action:Pack /zipfile:SolutionA.zip /folder:C:\repos\myrepo /SolutionName:SolutionA
Použite argument príkazu /map
Nasledujúca diskusia podrobne popisuje použitie argumentu /map pre nástroj SolutionPackager.
Súbory, ktoré sú zabudované v automatizovanom zostavovacom systéme, ako sú súbory .xap Silverlight a zostavy doplnkov, sa spravidla nekontrolujú v rámci kontroly zdroja. Webové zdroje už môžu byť prítomné v systéme riadenia zdrojového kódu na miestach, ktoré nie sú priamo kompatibilné s nástrojom SolutionPackager. Zahrnutím parametra /map môže byť nástroj SolutionPackager nasmerovaný na čítanie a balenie takýchto súborov z alternatívnych umiestnení a nie zvnútra priečinka Extract, ako by sa to zvyčajne robilo. Parameter /map musí určovať názov a cestu k súboru XML obsahujúcemu mapovacie direktívy. Tieto direktívy dávajú SolutionPackageru pokyn, aby porovnával súbory podľa ich názvu a cesty a označoval alternatívne umiestnenie na nájdenie zodpovedajúceho súboru. Nasledujúce informácie platia rovnako pre všetky smernice.
Môže byť uvedených viacero direktív vrátane tých, ktoré zodpovedajú identickým súborom. Direktívy uvedené na začiatku súboru majú prednosť pred direktívami uvedenými neskôr.
Ak sa súbor zhoduje s akoukoľvek smernicou, musí sa nájsť aspoň na jednom alternatívnom mieste. Ak sa nenájdu žiadne zodpovedajúce alternatívy, SolutionPackager vydá chybu.
Cesty k priečinkom a súborom môžu byť absolútne alebo relatívne. Relatívne cesty sa vždy vyhodnocujú z priečinka určeného parametrom /folder.
Premenné prostredia môžu byť špecifikované pomocou syntaxe %variable%.
Zástupca priečinka "**" môže znamenať "v akomkoľvek podpriečinku". Môže sa použiť iba ako záverečná časť cesty, napríklad: "c:\folderA\**".
Žolíky názvu súboru môžu byť použité iba vo formách "*.ext" alebo "*.*". Žiadny iný vzor nie je podporovaný.
Tu sú popísané tri typy mapovaní smerníc spolu s príkladom, ktorý vám ukáže, ako ich používať.
Mapovanie priečinka
Nasledujúce informácie poskytujú podrobné informácie o mapovaní priečinkov.
Formát XML
<Folder map="folderA" to="folderB" />
Opis
Cesty k súborom, ktoré zodpovedajú "folderA", sa prepnú na "folderB".
Hierarchia podpriečinkov v rámci každého z nich sa musí presne zhodovať.
Zástupné znaky priečinkov nie sú podporované.
Nie je možné zadať žiadne názvy súborov.
Príklady
<Folder map="folderA" to="folderB" /> <Folder map="folderA\folderB" to="..\..\folderC\" /> <Folder map="WebResources\subFolder" to="%base%\WebResources" />
Mapovanie zo súboru do súboru
Nasledujúce informácie poskytujú podrobnejšie informácie o mapovaní medzi súbormi.
Formát XML
<FileToFile map="path\filename.ext" to="path\filename.ext" />
Opis
Akýkoľvek súbor zodpovedajúci parametru map sa načíta z názvu a cesty zadanej v parametri to .
Pre parameter map:
Názov súboru musí byť určený. Cesta je voliteľná. Ak nie je zadaná žiadna cesta, súbory z ľubovoľného priečinka sa môžu zosúlaďovať.
Zástupné znaky v názvoch súborov nie sú podporované.
Zástupný znak priečinka je podporovaný.
Pre parameter
to:Názov súboru a cesta musia byť určené.
Názov súboru sa môže líšiť od názvu v parametre
map.Zástupné znaky v názvoch súborov nie sú podporované.
Zástupný znak priečinka je podporovaný.
Príklady
<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" />
Vo vyššie uvedenom príklade balíka NuGet sa súbor cr886_PluginPackageTest.nupkg neprepíše, ak už súbor v zadanom umiestnení existuje.
Mapovanie súboru k ceste
Nasledujú podrobné informácie o mapovaní zo súboru na cestu.
Formát XML
<FileToPath map="path\filename.ext" to="path" />
Opis
Akýkoľvek súbor zodpovedajúci parametru map sa načíta z cesty špecifikovanej v parametri to.
Pre parameter map:
Názov súboru musí byť určený. Cesta je voliteľná. Ak nie je zadaná žiadna cesta, súbory z ľubovoľného priečinka sa môžu zosúlaďovať.
Zástupné znaky názvov súborov sú podporované.
Zástupný znak priečinka je podporovaný.
Pre parameter to:
Cesta musí byť určená.
Zástupný znak priečinka je podporovaný.
Názov súboru nesmie byť určený.
Príklady
<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" />
Príklad mapovania
Nasledujúca vzorka kódu XML zobrazuje kompletný mapovací súbor, ktorý umožňuje nástroju SolutionPackager čítať akýkoľvek webový zdroj a dve predvolené generované zostavy z projektu Developer Toolkit s názvom 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>
Spravované a nespravované riešenia
Súbor komprimovaného riešenia Dataverse (.zip) možno exportovať do jedného z dvoch typov, ako je to znázornené tu.
Spravované riešenie
Dokončené riešenie pripravené na import do organizácie. Po importe už komponenty nie je možné pridávať ani odstraňovať, hoci môžu voliteľne umožniť ďalšiu úpravu. Toto sa odporúča, keď je vývoj riešenia kompletný.
Nespravované riešenie
Otvorené riešenie bez obmedzení toho, čo sa dá pridať, odstrániť alebo zmeniť. Odporúča sa to pri vývoji riešenia.
Formát súboru komprimovaného riešenia sa bude líšiť v závislosti od typu, spravovaného alebo nespravovaného. SolutionPackager dokáže spracovať komprimované súbory riešení oboch typov. Nástroj však nedokáže previesť jeden typ na iný. Jediným spôsobom, ako previesť súbory riešení na iný typ, napríklad z nespravovaných na spravované, je importovanie súboru .zip nespravovaného riešenia na server Dataverse a potom export riešenia ako spravovaného riešenia.
SolutionPackager dokáže spracovať .zip súbory nespravovaného a spravovaného riešenia ako kombinovanú sadu pomocou parametra /PackageType:Both. Ak chcete vykonať túto operáciu, je potrebné exportovať vaše riešenie dvakrát ako každý typ a súbory .zip pomenovať nasledujúcim spôsobom.
Nespravovaný súbor .zip: AkýkoľvekNázov.zip
Spravovaný súbor .zip: AkýkoľvekNázov_managed.zip
Nástroj bude predpokladať prítomnosť spravovaného súboru zip v rovnakom priečinku ako nespravovaný súbor a extrahuje oba súbory do jedného priečinka, pričom zachováva rozdiely, v ktorých existujú spravované aj nespravované komponenty.
Po extrahovaní riešenia ako nespravovaného aj spravovaného je možné z jedného priečinka zabaliť oba alebo každý typ jednotlivo pomocou parametra /PackageType, aby ste určili, ktorý typ sa má vytvoriť. Pri zadaní oboch súborov sa vytvoria dva súbory .zip s použitím vyššie uvedenej konvencie pomenovania. Ak parameter /PackageType chýba pri balení z duálneho spravovaného a nespravovaného priečinka, predvoleným nastavením je vytvorenie jedného nespravovaného súboru .zip.
Riešenie problémov
Správa zobrazená pri použití Visual Studio na úpravu zdrojových súborov
Ak použijete Visual Studio na úpravu resource fsiles vytvorených balíkovačom riešení, môžete pri prebalení dostať správu podobnú tejto: "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." Toto sa stáva, pretože Visual Studio nahradí metadátové tagy resource súboru dátovými tagmi.
Alternatívne riešenie
Otvorte súbor zdrojov v obľúbenom textovom editore a vyhľadajte a aktualizujte nasledujúce značky:
<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">Zmeňte názov uzla z
<data>na<metadata>.Napríklad tento reťazec:
<data name="Source LCID" xml:space="preserve"> <value>1033</value> </data>Sa zmení na:
<metadata name="Source LCID" xml:space="preserve"> <value>1033</value> </metadata>Toto umožňuje balíčkovaču riešení čítať a importovať súbor zdrojov. Tento problém bol pozorovaný iba pri používaní editora zdrojov Visual Studio.
Chyba: "Nemožno nájsť požadovaný súbor ...\Other\Customizations.xml" s priečinkom YAML
Táto chyba sa objaví, keď spustíte SolutionPackager (alebo pac solution pack) proti priečinku, ktorý obsahuje YAML súbory, ako napríklad solution.yml, ale tieto súbory sú umiestnené na koreň priečinka namiesto požadovaného podpriečinka solutions/<SolutionUniqueName>/ .
Príčina: Nástroj detekuje formát správy zdrojového kódu YAML hľadaním podpriečinka obsahujúceho solutions/*solution.yml súbory. Keď tento adresár chýba, nástroj ticho prechádza späť k XML (legacy) formátu a očakáva Other\Customizations.xml. Výsledná chybová správa odkazuje na XML súbor a nespomína YAML, čo je zavádzajúce.
Oprava: Reorganizujte priečinok tak, aby YAML manifest súbory boli pod správnymi cestami:
<rootFolder>/
solutions/<YourSolutionUniqueName>/ ← move solution.yml here
solution.yml
solutioncomponents.yml
rootcomponents.yml
missingdependencies.yml
publishers/<YourPublisherUniqueName>/
publisher.yml
Ak ste priečinok získali z Git integration commit alebo pac solution clone, štruktúra priečinkov by už mala byť správna. Priečinok, ktorý obsahuje iba najvyššie YAML súbory bez podadresára solutions/ , predstavuje neúplnú extraháciu a nedá sa priamo zabaliť.
Upozornenie: komponent deklarovaný v rootcomponents.yml nemá žiadne zdrojové súbory
Toto varovanie sa objaví, keď je komponent, napríklad aplikácia na plátne, uvedený v rootcomponents.yml , ale v očakávanom priečinku komponentu neexistujú žiadne zodpovedajúce zdrojové súbory (napríklad canvasapps/<schema-name>/).
Účinok: Nástroj stále uspeje (výstupný kód 0) a vytvorí platný .zip súbor, ale deklarovaná komponenta je z baleného riešenia vynechaná.
Príčina: Priečinok bol vytvorený čiastočnou extraháciou, alebo zdrojové súbory komponentu neboli zahrnuté v repozitári. Napríklad sa commitovali iba súbory manifestu riešenia, nie samotná aplikácia Canvas.
Oprava: Uistite sa, že všetky komponenty deklarované v majú rootcomponents.yml v priečinku zodpovedajúce zdrojové súbory. Pre canvas aplikácie musí súbor .msapp existovať pod .canvasapps/<schema-name>/ Ak chýbajú nejaké súbory, znovu exportujte celé riešenie z Dataverse a rozbaľte ho znova, alebo použite pac solution clone na získanie úplného extrahovania.