Nástroj SolutionPackager
SolutionPackager je nástroj, který dokáže vratně rozložit komprimovaný soubor řešení Microsoft Dataverse na více souborů XML a jiné soubory. Tyto soubory pak můžete snadno spravovat prostřednictvím systému pro správu zdrojového kódu. Následující sekce ukazují, jak nástroj spustit a jak jej používat se spravovanými a nespravovanými řešeními.
Důležité
Nástroj SolutionPackager již není doporučeným způsobem pro rozbalování a balení řešení. Možnosti nástroje SolutionPackager byly začleněny do rozhraní příkazového řádku Power Platform. Příkaz pac solution
má řadu sloves včetně unpack
, pack
, clone
a sync
, která obsahují stejné základní možnosti jako nástroj SolutionPackager.
Kde najít nástroj SolutionPackager
Nástroj SolutionPackager je distribuován jako součást balíčku Microsoft.CrmSdk.CoreTools NuGet . 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 nástroje SolutionPackager
SolutionPackager je nástroj příkazového řádku, který lze vyvolat pomocí parametrů uvedených v následující tabulce.
Argument | Description |
---|---|
/action: {Extract|Pack} | Požadováno. Akce k provedení. Tato akce může buď extrahovat soubor .zip řešení do složky nebo zabalit složku do souboru .zip. |
/zipfile: <file path> | Požadováno. 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í je soubor nahrazen. |
/folder: <folder path> | Požadováno. Cesta ke složce. Při extrahování je tato složka vytvořena a naplněna soubory součásti. Při balení musí tato složka již existovat a obsahovat dříve extrahované soubory součásti. |
/packagetype: {Unmanaged|Managed|Both} | Nepovinné. Typ balíčku pro zpracování. Výchozí hodnota je Unmanaged. Tento argument může být ve většině případů vynechán, protože typ balíčku lze přečíst zevnitř souboru .zip nebo souborů součásti. 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:{Yes|No} | Nepovinné. Výchozí hodnota je Ano. Tento argument se používá pouze během extrakce. Když je zadán argument /allowWrite:No, nástroj provede všechny operace, ale má zakázáno zapsat nebo odstranit jakékoli soubory. Operaci extrakce lze bezpečně posoudit bez přepsání nebo odstranění existujících souborů. |
/allowDelete:{Yes|No|Prompt} | Nepovinné. 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í. Když je zadán argument /allowDelete:Prompt, je uživatel prostřednictvím konzole vyzván, aby povolil nebo zakázal všechny operace 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 | Nepovinné. Tento argument se používá pouze během extrakce. Když je zadán argument /clobber, budou přepsány nebo odstraněny soubory jen pro čtení. Když není zadán, soubory jen pro čtení nejsou přepsány nebo odstraněny. |
/errorlevel: {Off|Error|Warning|Info|Verbose} | Nepovinné. Výchozí hodnota je Info. Tento argument označuje úroveň protokolovaných informací, které mají být na výstupu. |
/map: <file path> | Nepovinné. Cesta a název souboru .xml obsahujícího direktivy mapování souborů. Při použití během extrakce jsou soubory, které jsou běžně čteny ze složky určené parametrem /folder, načteny z alternativních umístění zadaných v souboru mapování. Během operace balení nejsou zapsány soubory odpovídající direktivám. |
/nologo | Nepovinné. Potlačí nápis během spuštění. |
/log: <file path> | Nepovinné. Cesta a název souboru protokolu. Pokud již soubor existuje, budou k souboru připojeny nové protokolovací informace. |
@ <file path> | Nepovinné. Cesta a název souboru, který obsahuje argumenty příkazového řádku pro nástroj. |
/sourceLoc: <string> | Nepovinné. Tento argument generuje soubor zdroje ze šablony a platí pouze při extrakci. Možné hodnoty jsou auto nebo kód LCID/ISO pro jazyk, který chcete exportovat. Při použití tohoto argumentu jsou zdroje řetězců z daného národního prostředí extrahovány jako neutrální soubor .resx. Pokud je zadán argument auto nebo pouze dlouhá nebo krátká forma přepínače, použije se základní národní prostředí nebo řešení. Můžete použít krátkou podobu příkazu: /src. |
/localize | Nepovinné. Extrahuje nebo sloučí všechny zdroje řetězců do souborů .resx. Můžete použít krátkou podobu příkazu: /loc. Možnost lokalizace podporuje sdílené komponenty pro soubory .resx. Další informace: Použití webových prostředků RESX |
Použití argumentu příkazu /map
Následující diskuse podrobně popisuje použití argumentu /map pro nástroj 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 k načtení a zabalení takových souborů z alternativních umístění, nikoli zevnitř složky Extract, jak by se 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 některý soubor odpovídá některé direktivě, 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.
Cesta ke složce a souboru může být absolutní nebo relativní. Relativní cesty jsou vždy vyhodnoceny ze složky určené parametrem /folder.
Proměnné prostředí lze specifikovat pomocí syntaxe %variable%.
Zástupný znak složky „**“ znamená „v jakékoli podsložce“. Může být použit pouze jako poslední část cesty, například: „c:\folderA\**“.
Zástupné znaky názvu souboru lze použít pouze ve formulářích „*.ext“ nebo „*.*“. Žádný jiný vzor není podporován.
Jsou zde popsány tři typy direktiv mapování a příklad, který vám ukáže, 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" />
Popis
Cesty k souborům, které odpovídají „folderA“, jsou přepnuty na „folderB“.
Hierarchie podsložek každé složky musí být totožná.
Zástupné znaky složky nejsou podporovány.
Nelze zadat žádné názvy souborů.
Příklady
<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" />
Popis
Jakýkoli soubor odpovídající parametru map
je načten z názvu a cesty zadané v parametru to
.
Pro parametr map
:
Je třeba zadat název souboru. Cesta je volitelná. Není-li zadána žádná cesta, mohou být použity 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 třeba zadat název a cestu souboru.
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.
Pří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" />
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" />
Popis
Jakýkoli soubor odpovídající parametru map
je načten z názvu zadaného v parametru to
.
Pro parametr map
:
Je třeba zadat název souboru. Cesta je volitelná. Není-li zadána žádná cesta, mohou být použity soubory z libovolné složky.
Zástupné znaky názvu souboru jsou podporovány.
Zástupný znak složky je podporován.
Pro parametr to
:
Je třeba zadat cestu.
Zástupný znak složky je podporován.
Není třeba zadat název souboru.
Pří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" />
Ukázkové mapování
Následující ukázka kódu XML ukazuje kompletní soubor mapování, který umožňuje nástroji SolutionPackager číst jakýkoli webový prostředek a dvě výchozí generované sestavy 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í
Komprimovaný soubor (.zip) řešení Dataverse lze exportovat v jednom ze dvou typů, jak je ukázáno zde.
spravované řešení
Dokončené řešení připravené k importu do organizace. Po importu nelze přidat ani odebrat součásti, i když mohou volitelně umožňovat další vlastní nastavení. To se doporučuje, když je vývoj řešení kompletní.
Nezvládnuté ř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 kompriovaného souboru s řešením se bude lišit podle jeho typu, buď spravované nebo nespravované. SolutionPackager může zpracovat komprimované soubory řešení obou typů. Nástroj však nemůže převést jeden typ na druhý. 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 nespravovaného řešení na server Dataverse a poté export řešení jako spravovaného.
SolutionPackager může zpracovávat soubory .zip nespravovaných a spravovaných řešení jako kombinovanou sadu pomocí parametru /PackageType:Both. Chcete-li provést tuto operaci, je nutné exportovat řešení dvakrát jako každý typ a soubory .zip pojmenovat následujícím způsobem.
Nespravovaný soubor .zip: LibovolnýNázev.zip | Spravovaný soubor .zip: LibovolnýNázev_managed.zip |
Nástroj bude předpokládat přítomnost spravovaného souboru .zip ve stejné složce, jako se nachází nespravovaný soubor, a extrahuje oba soubory do jediné složky, přičemž budou zachovány rozdíly, pokud existují spravované i nespravované součásti.
Poté, co bylo řešení extrahováno jako nespravované i spravované, je možné z jedné složky sbalit oba nebo každý typ jednotlivě pomocí parametru /PackageType, kterým určíte, 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 parametr /PackageType chybí při balení z duální spravované i nespravované složky, ve výchozím nastavení se vytvoří jediný nespravovaný soubor .zip.
Řešení problémů
Pokud používáte Visual Studio pro úpravy zdrojových souborů vytvořených nástrojem SolutionPackager, můžete při opětovném zabalení obdržet zprávu: “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 děje proto, že Visual Studio nahradí značky metadat zdrojových souborů značkami dat.
Zástupné řešení
Otevřete zdrojový soubor v 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 pozorován pouze při používání editoru zdrojů Visual Studio.
Viz také
Používejte ovládání zdroje se soubory řešení
Koncepty řešení