Orodje SolutionPackager

SolutionPackager je orodje, ki lahko reverzibilno razgradi Microsoft Dataverse stisnjeno datoteko rešitve v več datotek XML in drugih datotek. Te datoteke lahko nato preprosto upravljate s sistemom za nadzor vira. Naslednji razdelki prikazujejo, kako zagnati orodje in kako ga uporabljati z upravljanimi in neupravljanimi rešitvami.

Kje lahko najdete orodje SolutionPackager

Orodje SolutionPackager se distribuira kot del paketa Microsoft.CrmSdk.CoreTools NuGet. Če želite namestiti program, sledite tem korakom.

  1. Prenesite NuGet paket.
  2. Preimenujte pripono imena datoteke paketa iz .nupkg v .zip.
  3. Ekstrahirajte vsebino stisnjene (zip) datoteke.

Izvršljivo datoteko SolutionPackager.exe boste našli v mapi <extracted-folder-name>/contents/bin/coretools. Zaženite program iz mape coretools ali dodajte to mapo v PATH.

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
/action: {Extract|Pack} Obvezno. Dejanje za izvedbo. Dejanje je lahko ekstrahiranje datoteke .zip z rešitvijo v mapo ali zapakiranje mape v datoteko .zip.
/zipfile: <file path> Obvezno. Pot in ime datoteke .zip z rešitvijo. Pri ekstrahiranju mora datoteka obstajati in biti berljiva. Pri pakiranju se datoteka nadomesti.
/folder: <folder path> 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: {Unmanaged|Managed|Both} 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 podano packing in Both, 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 te teme.
/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čena vrednost /allowDelete:Yes, se vse datoteke v mapi, ki so določene s parametrom /folder in niso pričakovane, samodejno izbrišejo. Ko je podano /allowDelete:No, ne pride do brisanja. Ko je določena vrednost /allowDelete:Prompt, je uporabnik prek konzole pozvan, naj dovoli ali zavrne vse postopke brisanja. Če je podan /allowWrite:No, do brisanja ne pride, tudi če je podan 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 ta vrednost ni določena, se datoteke z atributom samo za branje ne prepišejo ali izbrišejo.
/errorlevel: {Off|Error|Warning|Info|Verbose} Izbirno. Privzeta vrednost je »Podatki«. Ta argument prikazuje raven dnevniških podatkov, ki jih je treba izpisati.
/map: <file path> 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 postopkom pakiranja se datoteke, ki ustrezajo direktivam, ne zapišejo.
/nologo Izbirno. Med izvajanjem skrijte pasico.
/log: <file path> Izbirno. Pot do dnevniške datoteke in njeno ime. Če datoteka že obstaja, se ji dodajo novi dnevniški podatki.
@ <file path> Izbirno. Pot do datoteke, ki vsebuje argumente ukazne vrstice za orodje, in njeno ime.
/sourceLoc: <string> 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

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 vira 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 podati ime in pot do datoteke XML, ki vsebuje direktive za preslikavo. Te direktive naročijo SolutionPackagerju, naj ujema datoteke po njihovem imenu in poti ter navede nadomestno lokacijo za iskanje ujemajoče se datoteke. Naslednji podatki veljajo enako za vse direktive.

  • Navedenih je lahko več direktiv, vključno s tistimi direktivami, ki se ujemajo z enakimi datotekami. Direktive, navedene zgodaj v datoteki, imajo prednost pred direktivami, navedenimi pozneje.

  • Če je datoteka povezana s katero koli direktivo, jo je treba najti na vsaj enem drugem mestu. Če ne najde nobene ustrezne alternative, 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 za mapo »**« se lahko uporablja za pomen »v kateri koli podmapi«. Uporablja se lahko samo kot zadnji del poti, na primer: »c:\folderA\**«.

  • Nadomestni znaki za imena datotek se lahko uporabljajo samo v obliki zapisa »*.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 nudijo podrobne informacije o preslikavi map.

Oblika zapisa Xml

<Folder map="folderA" to="folderB" />

Opis

Poti datotek, ki se ujemajo z "mapoA", se preklopijo na "mapoB".

  • Hierarhija podmap pod vsako se mora natančno ujemati.

  • Nadomestni znaki za mape 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 nudijo več podrobnosti o preslikavi med datotekami.

Oblika zapisa Xml

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

Opis

Vsaka datoteka, ki ustreza parametru map, bo prebrana 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 za ime datoteke 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 za ime datoteke 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" /> 

Upoštevajte, da v zgornjem NuGet primeru paketa cr886_PluginPackageTest.nupkg ni prepisan, če datoteka že obstaja na navedenem mestu.

Preslikava datoteke v pot

V nadaljevanju so navedene podrobne informacije o preslikavi iz datoteke v pot.

Oblika zapisa 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 sub-folders -->  
       <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. Po uvozu komponent ni mogoče dodati ali odstraniti, čeprav lahko po želji omogočijo nadaljnjo prilagoditev. 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 ene vrste v drugo. 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. Ko podate obe datoteki, bosta z zgoraj navedenim dogovorom o poimenovanju izdelani dve datoteki .zip. Če parameter /PackageType manjka pri pakiranju iz dvojne, upravljane in neupravljane, mape, je privzeto ustvarjena ena neupravljana datoteka .zip.

Odpravljanje težav

Če uporabljate Visual Studio za urejanje datotek z viri, ki jih je ustvarilo orodje za pakiranje rešitev, boste ob ponovnem pakiranju morda prejeli 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.” Do tega pride, ker Visual Studio nadomesti oznake metapodatkov v datoteki virov s podatkovnimi oznakami.

Nadomestna rešitev

  1. 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">  
    
    
  2. 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. To težavo smo opazili šele pri uporabi urejevalnika virov Visual Studio.

Glejte tudi

Uporaba nadzora izvorne kode z datotekami rešitev

Koncepti rešitev