Dijeli putem


Alat za pakiranje rješenja

SolutionPackager je alat koji može reverzibilno rastaviti komprimiranu datoteku Microsoft Dataverse rješenja u više XML datoteka i drugih datoteka. Zatim možete jednostavno upravljati tim datotekama pomoću sustava za kontrolu izvornog koda. U sljedećim odjeljcima vam je prikazano kako pokrenuti alat i kako ga koristiti s upravljanim i neupravljanim rješenjima.

Važno

Alat SolutionPackager više nije preporučeni način raspakiranja i pakiranja otopina. Mogućnosti alata SolutionPackager ugrađene su u Power Platform CLI. Naredba pac solution ima niz glagola, uključujući unpack, pack,, clone i sync koji uključuju iste temeljne mogućnosti alata SolutionPackager.

Gdje pronaći alat SolutionPackager

Alat SolutionPackager distribuira se kao dio paketa Microsoft.CrmSdk.CoreTools NuGet. Da biste instalirali program, slijedite ove korake.

  1. Preuzmite NuGet paket.
  2. Preimenujte datotečni nastavak paketa iz .nupkg u .zip.
  3. Izdvojite sadržaj komprimirane (zip) datoteke.

Izvršnu datoteku SolutionPackager.exe pronađite u mapi <extracted-folder-name>/contents/bin/coretools. Pokrenite program iz mape coretools ili dodajte tu mapu u svoj PATH.

Argumenti naredbenog retka alata SolutionPackager

SolutionPackager je alat naredbenog retka koji se može pozvati parametrima navedenim u sljedećoj tablici.

Argument Opis
/akcija: {Extract|Pakiraj} Obvezno. Radnja koju treba izvesti. Radnja može biti ili izdvajanje .zip datoteke rješenja u mapu ili pakiranje mape u .zip datoteku.
/zip datoteka: <putanja datoteke> Obvezno. Putanja i naziv .zip datoteke rješenja. Prilikom izdvajanja datoteka mora postojati i biti čitljiva. Pri pakiranju se zamjenjuje datoteka.
/mapa: <putanja mape> Obvezno. Putanja do mape. Prilikom izdvajanja ova se mapa stvara i popunjava datotekama komponenti. Pri pakiranju ova mapa mora već postojati i sadržavati prethodno izdvojene datoteke komponenti.
/vrsta pakiranja: {Unmanaged|Managed|Oba} Nije obavezno. Vrsta paketa za obradu. Zadana vrijednost je Neupravljano. Ovaj argument može biti izostavljen u većini slučajeva jer se vrsta paketa može čitati iz .zip datoteke ili datoteka komponenti. Prilikom izdvajanja, a navedeno je Oba, moraju biti prisutne .zip datoteke upravljanog i neupravljanog rješenja i obrađuju se u jednu mapu. Kada je navedeno pakiranje i oboje, upravljane i neupravljane datoteke rješenja .zip se proizvode iz jedne mape. Dodatne informacije potražite u odjeljku o radu s upravljanim i neupravljanim rješenjima u nastavku ovog članka.
/dopuštanja pisanja:{Yes|Ne} Nije obavezno. Zadana je vrijednost Da. Ovaj se argument koristi samo tijekom izdvajanja. Kada je navedeno /allowWrite:Ne, alat izvršava sve operacije, ali je onemogućen u pisanju ili brisanju bilo koje datoteke. Operacija izdvajanja može se sigurno procijeniti bez prebrisivanja ili brisanja bilo kojih postojećih datoteka.
/dopuštanje brisanja:{Yes|No|Na zahtjev} Nije obavezno. Zadana vrijednost je Upit. Ovaj se argument koristi samo tijekom izdvajanja. Kada je naveden /allowDelete:Yes, sve datoteke prisutne u mapi određenoj parametrom /folder koje se ne očekuju automatski se brišu. Kada je naveden /allowDelete:No, ne dolazi do brisanja. Kad je navedeno /allowDelete:Upit, korisnik će biti upitan putem konzole da dozvoli ili odbije sve operacije brisanja. Ako je naveden /allowWrite:No, nema brisanja čak i ako je naveden i /allowDelete:Yes.
/clobber Nije obavezno. Ovaj se argument koristi samo tijekom izdvajanja. Kad je navedeno /clobber, datoteke s postavljenim atributom samo za čitanje prebrisane su ili se brišu. Kad nije navedeno, datoteke s postavljenim atributom samo za čitanje nisu prebrisane ili se ne brišu.
/razina pogreške {Off|Error|Warning|Info|Opširna} Nije obavezno. Zadana vrijednost je Informacije. Ovaj argument označava razinu informacija o zapisivanju koje treba dobiti.
/mapa: <putanja datoteke> Nije obavezno. Putanja i naziv .xml datoteke koja sadrži smjernice za mapiranje datoteka. Kada se koriste tijekom izdvajanja, datoteke koje se obično čitaju iz mape određene parametrom /folder čitaju se s alternativnih mjesta kako je određeno u datoteci za mapiranje. Tijekom operacije pakiranja, datoteke koje odgovaraju smjernicama se ne zapisuju.
/nologo Nije obavezno. Izostavite banner tijekom izvođenja.
/zapisnik: <putanja datoteke> Nije obavezno. Putanja i naziv datoteke zapisnika. Ako datoteka već postoji, datoteci se dodaju nove informacije o zapisivanju.
@ <putanja datoteke> Nije obavezno. Putanja i naziv datoteke koja sadrži argumente naredbenog retka za alat.
/LocIzvora: <niz> Nije obavezno. Ovaj argument generira datoteku resursa predloška i vrijedi samo pri izdvajanju.

Moguće vrijednosti su auto ili LCID/ISO kôd za jezik koji želite izvesti. Kada se koristi ovaj argument, resursi nizova iz date regionalne sheme izdvajaju se kao neutralna .resx datoteka. Ako je navedeno auto ili samo dugi ili kratki oblik prekidača, koristi se osnovna regionalna shema ili rješenje. Možete koristiti kratki oblik naredbe: /src.
/localize Nije obavezno. Izdvojite ili spojite sve resurse nizova u .resx datoteke. Možete koristiti kratki oblik naredbe: /loc. Opcija lokalizacije podržava dijeljene komponente za .resx datoteke. Dodatne informacije: Korištenje RESX web resursa

Upotreba argumenta naredbe /map

Sljedeća rasprava detaljno prikazuje upotrebu argumenata /map za alat SolutionPackager.

Datoteke koje su ugrađene u sustav automatizirane gradnje, kao što su .xap Silverlight datoteke i sklopovi priključaka, obično se ne provjeravaju u kontroli izvora. Web-resursi možda su već prisutni u kontroli izvornog koda na mjestima koja nisu izravno kompatibilna s alatom SolutionPackager. Uključivanjem parametra /map, alat SolutionPackager može se usmjeriti za čitanje i pakiranje takvih datoteka s alternativnih mjesta, a ne iz mape Izdvajanje kao što se obično radi. Parametar /map mora navesti naziv i put do XML datoteke koja sadrži direktive mapiranja. Te direktive upućuju SolutionPackager da podudara datoteke prema nazivu i putu te označavaju alternativno mjesto za pronalaženje podudarne datoteke. Sljedeće informacije odnose se jednako na sve smjernice.

  • Može biti navedeno više direktiva, uključujući one direktive koje odgovaraju identičnim datotekama. Direktive navedene na početku datoteke imaju prednost nad direktivama navedenim kasnije.

  • Ako je datoteka povezana s nekom smjernicom, mora se pronaći na barem jednom alternativnom mjestu. Ako se ne pronađu odgovarajuće alternative, SolutionPackager izdaje pogrešku.

  • Putanje mapa i datoteka mogu biti apsolutne ili relativne. Relativne putanje se uvijek procjenjuju iz mape određene parametrom /folder.

  • Varijable okruženja mogu se odrediti upotrebom sintakse %variable%.

  • Zamjenski znak mape "**" može se koristiti za označavanje "u bilo kojoj podmapi". Može se koristiti samo kao završni dio puta, na primjer: "c:\folderA\**".

  • Zamjenski znakovi naziva datoteka mogu se koristiti samo u oblicima “*.ext” ili “*.*”. Nije podržan nijedan drugi obrazac.

    Ovdje su opisane tri vrste mapiranja smjernica, zajedno s primjerom koji vam pokazuje kako ih koristiti.

Mapiranje mape

Sljedeće informacije pružaju detaljne informacije o mapiranju mapa.

Xml Format

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

Opis

Putovi datoteka koji odgovaraju "mapi A" prebacuju se u "mapu B".

  • Hijerarhija podmapa pod svakom mora točno odgovarati.

  • Zamjenski znakovi mapa nisu podržani.

  • Ne mogu se navesti nazivi datoteka.

    Primjerima

    <Folder map="folderA" to="folderB" />  
    <Folder map="folderA\folderB" to="..\..\folderC\" />  
    <Folder map="WebResources\subFolder" to="%base%\WebResources" />  
    

Mapiranje Od datoteke do datoteke

Sljedeće informacije pružaju više pojedinosti o mapiranju između datoteka.

Xml Format

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

Opis

Svaka datoteka koja odgovara parametru map čita se iz naziva i puta navedenog u parametru to .

Za parametar map:

  • Mora se navesti naziv datoteke. Putanja nije obavezna. Ako nije navedena putanja, mogu se povezati datoteke iz bilo koje mape.

  • Zamjenski znakovi naziva datoteke nisu podržani.

  • Zamjenski znak mape je podržan.

    Za parametar to:

  • Moraju se navesti naziv datoteke i putanja.

  • Naziv datoteke može se razlikovati od naziva u parametru map.

  • Zamjenski znakovi naziva datoteke nisu podržani.

  • Zamjenski znak mape je podržan.

Primjerima

  <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" /> 

U gornjem NuGet primjeru paketa, cr886_PluginPackageTest.nupkg se ne prepisuje ako datoteka već postoji na navedenom mjestu.

Mapiranje od datoteke do putanje

Slijede detaljne informacije o mapiranju od-datoteke-do-putanje.

Xml Format

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

Opis

Sve datoteke koje odgovaraju parametru map čitaju se iz putanje navedene u parametru to.

Za parametar map:

  • Mora se navesti naziv datoteke. Putanja nije obavezna. Ako nije navedena putanja, mogu se povezati datoteke iz bilo koje mape.

  • Zamjenski znakovi naziva datoteka su podržani.

  • Zamjenski znak mape je podržan.

Za parametar to:

  • Mora se navesti putanja.

  • Zamjenski znak mape je podržan.

  • Ne smije se navesti naziv datoteke.

    Primjerima

  <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" />  

Primjer mapiranja

Sljedeći uzorak XML koda prikazuje potpunu datoteku mapiranja koja omogućava alatu SolutionPackager čitanje bilo kojeg web-resursa i dva zadana generirana sklopa iz projekta Developer Toolkit nazvanog 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>  

Upravljana i neupravljana rješenja

U jednu od dvije vrste prikazane ovdje može se izvesti komprimirana (.zip) datoteka rješenja servisa Dataverse.

Upravljano rješenje
Dovršeno rješenje spremno za uvoz u organizaciju. Jednom uvezene komponente se ne mogu dodavati ili uklanjati, mada mogu dopustiti daljnja prilagođavanja po izboru. To se preporučuje po završetku razvoja rješenja.

Neupravljano rješenje
Otvoreno rješenje bez ograničenja onoga što se može dodati, ukloniti ili izmijeniti. To se preporučuje tijekom razvoja rješenja.

Format komprimirane datoteke rješenja razlikovat će se ovisno o njegovoj vrsti tj. da li je upravljano ili neupravljano. Alat SolutionPackager može obraditi komprimirane datoteke rješenja bilo koje vrste. Međutim, alat ne može pretvoriti jednu vrstu u drugu. Jedini način pretvaranja datoteka rješenja u drugu vrstu, na primjer iz neupravljanog u upravljano, je uvozom .zip datoteke neupravljanog rješenja u poslužitelj servisa Dataverse, a zatim izvozom rješenja kao upravljanog rješenja.

Alat SolutionPackager može obraditi .zip datoteke neupravljanog i upravljanog rješenja kao kombinirani skup putem parametra /PackageType:Both. Da biste izveli ovu operaciju, potrebno je dva puta izvesti rješenje za svaku vrstu te .zip datotekama dati sljedeće nazive.

Neupravljana .zip datoteka: AnyName.zip Upravljana .zip datoteka: AnyName_managed.zip

Alat će pretpostaviti prisutnost upravljane zip datoteke u istoj mapi s neupravljanom datotekom i izdvojiti obje datoteke u jednu mapu, zadržavajući razlike tamo gdje postoje upravljane i neupravljane komponente.

Nakon izdvajanja rješenja kao neupravljanog i upravljanog, moguće je iz te jedne mape spakirati oba ili svaku vrstu pojedinačno, koristeći parametar /PackageType za određivanje koju vrstu treba stvoriti. Prilikom specificiranja obje datoteke, dvije .zip datoteke će se proizvesti koristeći gore navedenu konvenciju imenovanja. Ako parametar /PackageType nedostaje prilikom pakiranja iz dvostruke, upravljane i neupravljane, mape, zadano je da se proizvede jedna neupravljana .zip datoteka.

Rješavanje problema

Ako koristite Visual Studio za uređivanje datoteka s resursima koje je stvorio alat za pakiranje rješenja, prilikom ponovnog pakiranja možete dobiti poruku sličnu ovoj: “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 događa jer Visual Studio zamjenjuje oznake metapodataka datoteka resursa oznakama podataka.

Zaobilazno rješenje

  1. Otvorite datoteku resursa u svom omiljenom uređivaču teksta i pronađite i ažurirajte sljedeće 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. Promijenite naziv čvora iz <data> u <metadata>.

    Na primjer, ovaj niz:

    <data name="Source LCID" xml:space="preserve">  
      <value>1033</value>  
    </data>  
    
    

    Mijenja se u:

    <metadata name="Source LCID" xml:space="preserve">  
      <value>1033</value>  
    </metadata>  
    
    

    To alatu za pakiranje rješenja omogućava čitanje i uvoz datoteke resursa. Taj je problem primijećen samo kod upotrebe uređivača resursa okruženja Visual Studio.

Pogledajte također

Korištenje kontrole izvornog koda s datotekama rješenja
Koncepti rješenja