Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
SolutionPackager je nástroj, který může nevratně rozložit Microsoft Dataverse komprimovaný soubor řešení do více souborů XML a dalších souborů. Tyto soubory pak můžete snadno spravovat prostřednictvím systému pro správu zdrojového kódu. V následujících částech je uvedeno, jak nástroj spustit a jak jej používat se spravovanými a nespravovanými řešeními.
Important
Nástroj SolutionPackager již není doporučeným způsobem pro rozbalování a balení řešení. Možnosti nástroje SolutionPackager jsou začleněny do rozhraní příkazového řádku Power Platform. Příkaz pac solution obsahuje mnoho sloves včetně unpack, pack, clonea sync které zahrnují stejné základní funkce nástroje SolutionPackager.
Kde najdete nástroj SolutionPackager
Nástroj SolutionPackager je distribuován jako součást balíčku NuGet Microsoft.CrmSdk.CoreTools . Pomocí těchto kroků nainstalujete tento program.
- Stáhněte si balíček NuGet.
- Přejmenujte příponu souboru balíčku z .nupkg na .zip.
- Rozbalte obsah komprimovaného souboru (zip).
Vyhledejte spustitelný soubor SolutionPackager.exe ve složce <název extrahované složky>/contents/bin/coretools. Spusťte program ze složky coretools nebo přidejte tuto složku do své cesty.
Argumenty příkazového řádku SolutionPackager
SolutionPackager je nástroj příkazového řádku, který lze vyvolat pomocí parametrů uvedených v následující tabulce.
| Argument | Description |
|---|---|
| /action: {Extrahovat|Zabalit} | Povinné. Akce k provedení. Akce může spočívat buď v extrahování souboru řešení .zip do složky, nebo v zabalení složky do souboru .zip. |
| /zipfile: <cesta k souboru> | Povinné. Cesta a název souboru .zip řešení. Při extrahování musí soubor existovat v zadané cestě a musí jej být možné přečíst. Při balení se soubor vymění. |
| /folder: <cesta ke složce> | Povinné. Cesta ke složce. Při extrahování se tato složka vytvoří a naplní soubory komponent. Při sbalení musí tato složka již existovat a obsahovat dříve extrahované dílčí soubory. |
| /packagetype: {Unmanaged|Managed|Both} | Optional. Typ balíčku, který se má zpracovat. Výchozí hodnota je Nespravováno. Tento argument může být ve většině případů vynechán, protože typ balíčku lze číst zevnitř souboru .zip nebo souborů komponent. Při extrahování a zadaném argumentu Both musí existovat soubory .zip spravovaného i nespravovaného řešení a jsou zpracovány do jedné složky. Při balení a zadaném argumentu Both budou soubory .zip spravovaného a nespravovaného řešení vytvořeny z jedné složky. Další informace naleznete v části o práci se spravovanými a nespravovanými řešeními později v tomto článku. |
| /allowWrite:{Ano|Ne} | Optional. Výchozí hodnota je Ano. Tento argument se používá pouze během extrakce. Pokud je zadán parametr /allowWrite:No, nástroj provede všechny operace, ale je mu zabráněno v zápisu nebo odstranění jakýchkoli souborů. Operaci extrakce lze bezpečně vyhodnotit bez přepsání nebo odstranění existujících souborů. |
| /allowDelete:{Ano|Ne|Výzva k akci} | Optional. Výchozí hodnota je Prompt. Tento argument se používá pouze během extrakce. Když je zadán argument /allowDelete:Yes, automaticky jsou odstraněny všechny neočekávané soubory nacházející se ve složce určené parametrem /folder. Když je zadán argument /allowDelete:No, nedojde k žádnému odstranění. Pokud je zadána hodnota /allowDelete:Prompt, zobrazí se uživateli prostřednictvím konzoly výzva k povolení nebo zamítnutí všech operací odstranění. Pokud je zadán argument /allowWrite:No, nedojde k žádnému odstranění, i když je zadán také argument /allowDelete:Yes. |
| /clobber | Optional. Tento argument se používá pouze během extrakce. Když je zadán parametr /clobber, soubory s nastaveným atributem pouze pro čtení jsou přepsány nebo odstraněny. Pokud není zadaný, soubory s atributem jen pro čtení se nepřepíší ani neodstraní. |
| /errorlevel: {Off|Error|Warning|Info|Verbose} | Optional. Výchozí hodnota je Info. Tento argument označuje úroveň protokolovaných informací, které mají být na výstupu. |
| /map: <cesta k souboru> | Optional. Cesta a název souboru .xml obsahujícího direktivy mapování souborů. Při použití během extrakce jsou soubory obvykle čtené ze složky určené parametrem /folder čteny z alternativních umístění určených v souboru mapování. Během operace balíčku nejsou soubory, které odpovídají direktivě, zapsány. |
| /nologo | Optional. Potlačí nápis během spuštění. |
| /log: <cesta k souboru> | Optional. Cesta a název souboru protokolu. Pokud soubor již existuje, budou k němu připojeny nové informace o protokolování. |
| <@ cesta k souboru> | Optional. Cesta a název souboru, který obsahuje argumenty příkazového řádku pro daný nástroj. |
| /sourceLoc: <řetězec> | Optional. Tento argument vygeneruje zdrojový soubor šablony a je platný pouze při extrahování. Možné hodnoty jsou auto nebo LCID/ISO kód pro jazyk, který chcete exportovat. Při použití tohoto argumentu se textové zdroje z daného národního prostředí extrahují jako neutrální soubor .resx. Pokud je zadán auto nebo pouze dlouhá či krátká forma přepínače, použije se základní oblastní nastavení nebo řešení. Můžete použít krátkou formu příkazu: /src. |
| /localize | Optional. Extrahuje nebo sloučí všechny zdroje řetězců do souborů .resx. Můžete použít krátkou formu příkazu: /loc. Možnost lokalizace podporuje sdílené komponenty pro soubory .resx. Další informace: Použití webových prostředků RESX |
| /ŘešeníJméno: <název> | Optional. Jedinečný název řešení, které se má zabalit nebo extrahovat, pokud zdrojová složka obsahuje více řešení v části solutions/*/solution.yml. Vyžaduje se, když se zjistí více než jedno řešení. Platí pouze pro formát správy zdrojového kódu YAML. Můžete použít krátký tvar příkazu: /sn. |
| /remapPluginTypeNames | Optional. Po zadání se plně kvalifikované názvy typů modulu plug-in znovu namapují na základě sestavení zahrnutých v řešení. Ve výchozím nastavení je povoleno ve formátu správy zdrojového kódu YAML. Můžete použít krátký tvar příkazu: /fp. |
Formáty souborů správy zdrojového kódu
SolutionPackager podporuje při extrahování a balení řešení dvě rozložení složek.
Formát XML (starší verze)
Původní formát. Metadata řešení je uložena v Other\Solution.xml a Other\Customizations.xml, a všechny soubory součástí jsou extrahovány do plošné hierarchie složek společně s těmito soubory. Tento formát je výchozím formátem .zip při extrahování souboru bez další konfigurace.
Formát správy zdrojového kódu YAML
Tento formát se představil společně s integrací Dataverse Gitu a ukládá metadata řešení jako soubory YAML distribuované v hierarchii strukturovaných složek. Je to formát napsaný při potvrzení řešení pomocí nativní integrace Gitu v Power Apps.
Výhody oproti formátu XML
- Vytváří srozumitelnější rozdíly jednotlivých komponent v systému správy zdrojového kódu.
- Podporuje více řešení v jedné složce úložiště.
- Soubory aplikací Canvas
.msappa moderní toky jsou podporovány pouze v tomto formátu. - Ve výchozím nastavení je aktivováno přemapování názvu typu modulu plug-in.
Požadovaná struktura složek
<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]/
Important
Formát YAML je automaticky rozdetekován přítomností solutions/ podsložky obsahující *solution.yml soubory.
Pokud jsou soubory manifestu YAML (solution.ymlsolutioncomponents.ymla tak dále) umístěny v kořenovém adresáři složky místo pod solutions/<SolutionUniqueName>/, nástroj nerozpozná formát YAML. Nástroj se vrátí k XML cestě a hlásí zavádějící chybu o chybějící Customizations.xml. Informace o řešení tohoto problému najdete v tématu Řešení potíží .
Další informace: Referenční informace k formátu správy zdrojového kódu YAML řešení
Pravidla pro automatické zjišťování formátu
| Podmínka | Použitý formát |
|---|---|
solutions/*/solution.yml found – přesně jedno řešení |
Formát YAML, kde se název řešení odvodí ze složky |
solutions/*/solution.yml found — více řešení |
Formát YAML, kde /SolutionName je argument povinný |
Žádný solutions/ podadresář není přítomen. |
Formát XML (starší verze) |
Balení složky formátu YAML
Následující příkaz zabalí složku formátu YAML.
SolutionPackager.exe /action:Pack /zipfile:MySolution.zip /folder:C:\repos\myrepo
Balení ze složky s více řešeními
Následující příkazy zabalí zadané řešení ve složce s více řešeními.
SolutionPackager.exe /action:Pack /zipfile:SolutionA.zip /folder:C:\repos\myrepo /SolutionName:SolutionA
Použití argumentu příkazu /map
Následující diskuze podrobně popisuje použití argumentu /map v nástroji SolutionPackager.
Soubory sestavené v automatizovaném sestavovacím systému, jako jsou soubory Silverlight typu .xap a sestavy modulů plugin, obvykle nejsou kontrolovány ve správě zdrojového kódu. Webové prostředky již mohou být přítomny ve správě zdrojového kódu v umístěních, která nejsou přímo kompatibilní s nástrojem SolutionPackager. Zahrnutím parametru /map lze nástroj SolutionPackager nasměrovat tak, aby četl a balil takové soubory z alternativních umístění, a nikoli ze složky Extract, jak by se to obvykle dělalo. Parametr /map musí specifikovat název a cestu k souboru XML obsahujícímu direktivy mapování. Tyto direktivy instruují SolutionPackager, aby porovnal soubory podle jejich názvu a cesty, a označí alternativní umístění pro nalezení shodného souboru. Následující informace platí pro všechny direktivy stejně.
Může být zadáno více direktiv, včetně těch, které odpovídají identickým souborům. Direktivy uvedené na začátku souboru mají přednost před direktivami uvedenými později.
Pokud je soubor shodný s jakoukoli direktivou, musí být nalezen alespoň v jednom alternativním umístění. Pokud nejsou nalezeny žádné odpovídající alternativy, nástroj SolutionPackager vydá chybu.
Cesty ke složkám a souborům mohou být absolutní nebo relativní. Relativní cesty jsou vždy vyhodnocovány ze složky určené parametrem /folder.
Proměnné prostředí lze zadat pomocí syntaxe %variable%.
Zástupný znak složky **lze použít k označení "v jakékoli podsložce". Dá se použít jenom jako poslední část cesty, například c:\folderA\**.
Zástupné znaky v názvech souborů lze použít pouze ve tvaru "*.ext" nebo "*.*". Žádný jiný vzor není podporován.
Zde jsou popsány tři typy mapování direktiv spolu s příkladem, který ukazuje, jak je používat.
Mapování složek
Následující informace obsahují podrobnosti o mapování složek.
Formát XML
<Folder map="folderA" to="folderB" />
Description
Cesty k souborům, které odpovídají 'folderA', se přesunou do 'folderB'.
Hierarchie podsložek každé složky musí být totožná.
Zástupné znaky složky nejsou podporovány.
Nesmí být zadány žádné názvy souborů.
Examples
<Folder map="folderA" to="folderB" /> <Folder map="folderA\folderB" to="..\..\folderC\" /> <Folder map="WebResources\subFolder" to="%base%\WebResources" />
Mapování souboru na soubor
Následující informace obsahují další podrobnosti o mapování souboru na soubor.
Formát XML
<FileToFile map="path\filename.ext" to="path\filename.ext" />
Description
Jakýkoli soubor odpovídající parametru map je načten z názvu a cesty zadané v parametru to.
Pro parametr map:
Je nutné zadat název souboru. Cesta je volitelná. Pokud není zadána žádná cesta, mohou být nalezeny soubory z libovolné složky.
Zástupné znaky názvu souboru nejsou podporovány.
Zástupný znak složky je podporován.
Pro parametr
to:Je nutné zadat název souboru a cestu.
Název souboru se může lišit od názvu v parametru
map.Zástupné znaky názvu souboru nejsou podporovány.
Zástupný znak složky je podporován.
Examples
<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" />
Ve výše uvedeném příkladu balíčku NuGet se cr886_PluginPackageTest.nupkg nepřepíše, pokud soubor již v zadaném umístění existuje.
Mapování souboru na cestu
Následují podrobné informace o mapování souboru na cestu.
Formát XML
<FileToPath map="path\filename.ext" to="path" />
Description
Jakýkoli soubor odpovídající parametru map se načte z cesty zadané v parametru to .
Pro parametr map:
Je nutné zadat název souboru. Cesta je volitelná. Pokud není zadána žádná cesta, mohou být nalezeny soubory z libovolné složky.
Podporovány jsou zástupné znaky názvů souborů.
Zástupný znak složky je podporován.
Pro parametr to:
Musí být zadána cesta.
Zástupný znak složky je podporován.
Název souboru nesmí být uveden.
Examples
<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" />
Příklad mapování
Následující ukázka kódu XML ukazuje úplný soubor mapování, který umožňuje nástroji SolutionPackager číst libovolný webový prostředek a dvě výchozí vygenerovaná sestavení z projektu Developer Toolkit s názvem 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á řešení
Soubor komprimovaného řešení Dataverse (.zip) lze exportovat v jednom ze dvou typů, jak je znázorněno zde.
Spravované řešení
Dokončené řešení připravené k importu do organizace. Po importu není možné přidat ani odebrat komponenty, i když můžou volitelně povolit další přizpůsobení. To se doporučuje po dokončení vývoje řešení.
Neřízené řešení
Otevřené řešení bez omezení toho, co lze přidat, odebrat nebo upravit. To se doporučuje při vývoji řešení.
Formát komprimovaného souboru řešení se bude lišit v závislosti na jeho typu, buď spravovaném, nebo nespravovaném. SolutionPackager může zpracovávat komprimované soubory řešení obou typů. Nástroj ale nemůže převést jeden typ na jiný. Jediným způsobem, jak převést soubory řešení na jiný typ, například z nespravovaného na spravovaný, je import souboru ZIP s nespravovaným řešením do serveru Dataverse a následné exportování řešení ve formátu spravovaného řešení.
SolutionPackager může zpracovávat nespravované a spravované soubory .zip jako kombinovanou sadu prostřednictvím parametru /PackageType:Both. K provedení této operace je nutné exportovat řešení dvakrát jako každý typ a pojmenovat .zip soubory následujícím způsobem.
Nespravovaný soubor .zip: AnyName.zip
Spravovaný soubor .zip: AnyName_managed.zip
Nástroj bude předpokládat přítomnost spravovaného souboru zip ve stejné složce jako nespravovaný soubor a extrahuje oba soubory do jedné složky, přičemž zachová rozdíly, kde existují spravované a nespravované součásti.
Poté, co bylo řešení extrahováno jako nespravované i spravované, je možné z této jediné složky zabalit oba nebo každý typ jednotlivě pomocí parametru /PackageType k určení, který typ se má vytvořit. Při zadání obou souborů budou vytvořeny dva soubory .zip dle konvence pojmenování, jak je uvedeno výše. Pokud při balení z duální spravované a nespravované složky chybí parametr /PackageType, ve výchozím nastavení se vytvoří jeden nespravovaný soubor .zip.
Troubleshooting
Zpráva zobrazená při použití „Visual Studio“ k úpravě prostředkových souborů
Pokud použijete Visual Studio k úpravě souborů prostředků vytvořených balíčkem řešení, může se při opětovném zabalení zobrazit zpráva podobná této: "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." K tomu dojde, protože Visual Studio nahradí značky metadat souboru prostředků značkami dat.
Workaround
Otevřete zdrojový soubor ve svém oblíbeném textovém editoru a vyhledejte a aktualizujte následující 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">Změňte název uzlu z
<data>na<metadata>.Například tento řetězec:
<data name="Source LCID" xml:space="preserve"> <value>1033</value> </data>Se změní na:
<metadata name="Source LCID" xml:space="preserve"> <value>1033</value> </metadata>To umožňuje nástroji SolutionPackager číst a importovat zdrojový soubor. Tento problém byl zaznamenán pouze při použití editoru prostředků sady Visual Studio.
Chyba: "Nelze najít požadovaný soubor ...\Other\Customizations.xml" se složkou YAML
Tato chyba se zobrazí, když spustíte SolutionPackager (nebo pac solution pack) ve složce, která obsahuje například soubory solution.ymlYAML, ale tyto soubory se umístí do kořenové složky, nikoli do požadované solutions/<SolutionUniqueName>/ podsložky.
Příčina: Nástroj rozpozná formát správy zdrojového kódu YAML nalezením solutions/ podsložky obsahující *solution.yml soubory. Pokud tento adresář chybí, nástroj bezobslužně přejde zpět do formátu XML (starší verze) a očekává Other\Customizations.xml. Výsledná chybová zpráva odkazuje na soubor XML a nezmíní YAML, což je zavádějící.
Opravit: Přeuspořádejte složku tak, aby soubory manifestu YAML byly pod správnými cestami:
<rootFolder>/
solutions/<YourSolutionUniqueName>/ ← move solution.yml here
solution.yml
solutioncomponents.yml
rootcomponents.yml
missingdependencies.yml
publishers/<YourPublisherUniqueName>/
publisher.yml
Pokud jste složku získali z potvrzení integrace Gitu nebo pac solution cloneby struktura složek měla být správná. Složka, která obsahuje pouze soubory YAML nejvyšší úrovně bez solutions/ podadresáře, představuje neúplný výstup a nelze ji zabalit přímo.
Upozornění: Komponenta deklarovaná v rootcomponents.yml nemá žádné zdrojové soubory
Toto upozornění se zobrazí, když je součást, například aplikace plátna, uvedena v rootcomponents.yml seznamu, ale v očekávané složce součásti neexistují žádné odpovídající zdrojové soubory (například canvasapps/<schema-name>/).
Účinek: Nástroj je stále úspěšný (ukončovací kód 0) a vytvoří platný .zip soubor, ale deklarovaná komponenta se vynechá z zabaleného řešení.
Příčina: Složku vytvořila částečná extrakce, nebo zdrojové soubory komponenty nebyly zahrnuty do úložiště. Například byly potvrzeny pouze soubory manifestu řešení, a nikoli samotná aplikace plátna.
Opravit: Ujistěte se, že všechny komponenty deklarované ve rootcomponents.yml složce obsahují odpovídající zdrojové soubory. U plátěných aplikací musí soubor .msapp existovat pod canvasapps/<schema-name>/. Pokud nějaké soubory chybí, znovu vyexportujte úplné řešení z Dataverse a znovu ho rozbalte nebo použijte pac solution clone k získání kompletního extrahování.