Nástroj SolutionPackager

SolutionPackager je nástroj, ktorý dokáže reverzibilne rozložiť Microsoft Dataverse komprimovaný súbor riešenia do viacerých súborov XML a iných súborov. Tieto súbory potom môžete jednoducho spravovať pomocou systému ovládania zdroja. Nasledujúce sekcie vám ukážu, ako nástroj spustiť a ako ho používať pri spravovaných a nespravovaných riešeniach.

Kde nájdete nástroj SolutionPackager

Nástroj SolutionPackager je distribuovaný ako súčasť balíka Microsoft.CrmSdk.CoreTools NuGet. Ak chcete nainštalovať program, postupujte podľa týchto krokov.

  1. Stiahnite si balík NuGet .
  2. Premenujte príponu súboru balíka z .nupkg na .zip.
  3. Extrahujte obsah komprimovaného (zip) súboru.

Spustiteľný súbor SolutionPackager.exe nájdete v priečinku <extracted-folder-name>/contents/bin/coretools. Spustite program z priečinka coretools alebo pridajte tento priečinok do svojej 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: <file path> Povinné. Cesta a názov súboru .zip riešenia. Pri extrakcii musí súbor existovať a musí byť čitateľný. Pri balení sa súbor nahradí.
/folder: <folder path> 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: {Unmanaged|Managed|Both} 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. Keď je zadané balenie a oboje, spravované a nespravované riešenie .zip súbory sa vytvárajú z jedného priečinka. Viac informácií nájdete v časti o práci so spravovanými a nespravovanými riešeniami neskôr v tejto téme.
/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. Keď je zadané /allowDelete:Yes, všetky súbory prítomné v priečinku určenom parametrom /folder, ktoré sa neočakávajú, sa automaticky odstránia. Keď je zadané /allowDelete:No, nenastanú žiadne vymazania. 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 vymazanie, aj keď 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 zadané, súbory, ktoré majú nastavený atribút len na čítanie, sa neprepíšu ani neodstránia.
/errorlevel: {Off|Error|Warning|Info|Verbose} Voliteľné. Predvolená hodnota je Info. Tento argument naznačuje úroveň protokolovaných informácií na výstupe.
/map: <file path> 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 operácie balenia nie sú zapisované súbory, ktoré zodpovedajú smerniciam.
/nologo Voliteľné. Potlačenie bannera za behu.
/log: <file path> 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í.
@ <file path> Voliteľné. Cesta a názov súboru, ktorý obsahuje argumenty príkazového riadku pre nástroj.
/sourceLoc: <string> 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. Ďalšie informácie: Používanie webových zdrojov RESX

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 ovládaní zdrojov 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í špecifikovať názov a cestu k súboru XML, ktorý obsahuje direktívy mapovania. Tieto direktívy prikazujú SolutionPackager, aby porovnával súbory podľa ich názvu a cesty, a uvádzajú alternatívne umiestnenie na nájdenie zhodného súboru. Nasledujúce informácie platia rovnako pre všetky smernice.

  • Môže byť uvedených viacero smerníc vrátane tých, ktoré zodpovedajú identickým súborom. Smernice uvedené na začiatku súboru majú prednosť pred smernicami 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ástupný znak priečinka "**" môže znamenať "v akomkoľvek podpriečinku". Môže sa použiť iba ako posledná časť cesty, napríklad: "c:\priečinokA\**".

  • Zástupné znaky názvu súboru sa môžu používať iba vo formátoch „*.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" />

Popis

Cesty k súborom, ktoré zodpovedajú "priečinku A", sa prepnú na "priečinok B".

  • 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ú ďalšie podrobnosti o mapovaní medzi súbormi.

Formát Xml

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

Popis

Akýkoľvek súbor zodpovedajúci parametru map sa načíta z názvu a 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 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 názvov 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" /> 

Všimnite si, že vo vyššie uvedenom príklade balíka NuGet sa cr886_PluginPackageTest.nupkg neprepíše, ak súbor už v určenom 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 sub-folders -->  
       <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 importovaní nie je možné pridať ani odstrániť komponenty, hoci môžu voliteľne umožniť ďalšie prispôsobenie. 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 nemôže prevádzať 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 konvencie pomenovania, ako je uvedené vyššie. 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

Ak používate Visual Studio na úpravu zdrojových súborov vytvorených balíčkovačom riešení, môže sa pri opätovnom zabalení zobraziť správa, ktorá je 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.” To sa deje preto, že Visual Studio nahradí značky metadát zdrojového súboru dátovými značkami.

Riešenie

  1. 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">  
    
    
  2. 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.

Pozrite si tiež:

Používanie ovládania zdrojov pomocou súborov riešení

Koncepty riešení