Podeli preko


Alatka za pravljenje paketa rešenja

SolutionPackager je alat koji može reverzibilno razgraditi komprimovanu datoteku Microsoft Dataverse rešenja u više KSML datoteka i drugih datoteka. Tada možete lako upravljati ovim datotekama pomoću sistema za kontrolu izvornog koda. Sledeći odeljci prikazuju vam kako da pokrenete alatku i kako da koristite alatku sa kompletnim i nekompletnim rešenjima.

Važno

Alatka SolutionPackager više nije preporučeni način za raspakivanje i pakovanje rešenja. Mogućnosti alata SolutionPackager su ugrađene u Power Platform CLI. Komanda pac solution ima veliki broj glagola, uključujući unpack, pack,, clone i sync koji uključuju iste osnovne mogućnosti alata SolutionPackager.

Gde možete pronaći alatku SolutionPackager

Alatka SolutionPackager se distribuira kao deo Microsoft.CrmSdk.CoreTools NuGet paketa. Da biste instalirali program, sledite ove korake.

  1. Preuzmite NuGet paket.
  2. Preimenujte ekstenziju imena datoteke paketa iz .nupkg u .zip.
  3. Ekstrakt sadržaj komprimovanog (zip) fajl.

Pronađi izvršnu SolutionPackager.exe u folderu <extracted-folder-name>/contents/bin/coretools. Pokrenite program iz foldera coretools ili dodajte taj folder u vašu PUTANJU.

Argumenti komandne linije alatke SolutionPackager

SolutionPackager je alatka komandne linije koji se može pozivati sa parametrima navedenim u sledećoj tabeli.

Argument Opis
/akcija: {Ekstrakt|Pakovanje} Obavezno. Radnja koju treba obaviti. Radnja može biti da raspakujete .zip datoteku u fasciklu ili da spakujete fasciklu u .zip datoteku.
/zipfile: <putanja do datoteke> Obavezno. Putanja i naziv .zip datoteke rešenja. Prilikom izdvajanja, fajl mora postojati i biti čitljiv. Prilikom pakovanja, datoteka se zamenjuje.
/folder: <putanja do fascikle> Obavezno. Putanja do fascikle. Prilikom raspakivanja, ova fascikla se kreira i popunjava datotekama komponenti. Prilikom pakovanja, ova fascikla već mora da postoji i sadrži prethodno raspakovane datoteke komponenti.
/packagetype: {Unmanaged|Upravljao|Oboje} Opcionalno. Tip paketa koji se obrađuje. Podrazumevana vrednost je „Unmanaged“. Ovaj argument može biti izostavljen u većini slučajeva jer se tip paketa može pročitati iz .zip datoteke ili datoteka komponenti. Kada raspakujete sadržaj i navedena je opcija „Both“, moraju da budu prisutne .zip datoteke i kompletnog i nekompletnog rešenja i obrađene u jednoj fascikli. Prilikom pakovanja i oba je navedeno, upravlja i neupravlja rešenje .zip fajlovi se proizvode iz jednog foldera. Za više informacija, pogledajte odeljak o radu sa upravljanim i neupravljanim rešenjima kasnije u ovom članku.
/allowWrite:{Yes|No} Opcionalno. Podrazumevana vrednost je Da. Ovaj argument se koristi samo tokom raspakivanja. Kada je navedeno /allowWrite:No, alatka obavlja sve operacije, ali je onemogućena u pisanju ili brisanju bilo koje datoteke. Operacija raspakivanja može se sigurno oceniti bez prepisivanja ili brisanja bilo koje postojeće datoteke.
/allowDelete:{Yes|No|Prompt} Opcionalno. Podrazumevana vrednost je Prompt. Ovaj argument se koristi samo tokom raspakivanja. Kada je /allowDelete:Yes specificirano, svi fajlovi prisutni u folderu specificirani parametrom /folder koji se ne očekuju su automatski obrisani. Kada je /allowDelete:No specificirano, nema brisanja. Kada je navedeno /allowDelete:Prompt, od korisnika će biti zatraženo preko konzole da dozvoli ili zabrani sve operacije brisanja. Ako je /allowWrite:No specificirano, nema brisanja čak i ako je /allowDelete:Yes takođe specificirano.
/clobber Opcionalno. Ovaj argument se koristi samo tokom raspakivanja. Kada je naveden parametar /clobber, datoteke koje imaju atribut samo za čitanje se prepisuju ili brišu. Kada nije navedeno, datoteke koje imaju atribut samo za čitanje se ne prepisuju niti brišu.
/errorlevel: {Off|Greška|Upozorenje|Info|Sažetak} Opcionalno. Podrazumevana vrednost je Info. Ovaj argument označava nivo informacija evidentiranja za iznošenje.
/map: <putanja do datoteke> Opcionalno. Putanja i naziv .xml datoteke koja sadrži direktive o mapiranju datoteka. Kada se koriste tokom raspakivanja, datoteke koje se obično čitaju iz fascikle određene parametrom /folder čitaju se sa alternativnih lokacija kako je određeno u datoteci za mapiranje. Tokom operacija pakovanja, datoteke koje se podudaraju sa direktivama se ne zapisuju.
/nologo Opcionalno. Potisnite baner tokom izvršavanja.
/log: <putanja do datoteke> Opcionalno. Putanja i naziv datoteke evidencije. Ako datoteka već postoji, u nju se dodaju nove informacije evidentiranja.
@ <putanja do datoteke> Opcionalno. Putanja i naziv datoteke koja sadrži argumente komandne linije za alatku.
/sourceLoc: <niska> Opcionalno. Ovaj argument generiše datoteku resursa predloška i važi samo pri raspakivanju.

Moguće vrednosti su auto ili LCID/ISO kôd za jezik koji želite da izvezete. Kada se koristi ovaj argument, resursi stringova iz datog lokalnog standarda se raspakuju kao neutralna .resx datoteka. Ako se navede auto ili samo dugačak ili kratak oblik prekidača, koristi se osnovni lokalni standard ili rešenje. Možete da koristite kratki oblik komande: /src.
/localize Opcionalno. Raspakujte ili objedinite sve resurse niski u .resx datoteke. Možete da koristite kratki oblik komande: /loc. Opcija lokalizacije podržava zajedničke komponente za .resx datoteke. Više informacija: Korišćenje RESX veb resursa

Korišćenje argumenta komande /map

Sledeća rasprava detaljno koristi upotrebu argumenta /map za alatku SolutionPackager.

Datoteke koje su ugrađene u sistem automatizovane gradnje, kao što su .xap Silverlight datoteke i sklopovi dodatnih komponenti, obično se ne proveravaju u kontroli izvora. Veb resursi mogu već biti prisutni u kontroli izvornog koda na lokacijama koje nisu direktno kompatibilne sa alatom SolutionPackager. Uključivanjem parametra /map, alatka SolutionPackager može biti usmerena na čitanje i pakovanje tih datoteka sa alternativnih lokacija, a ne iz fascikle Extract, kao što se to obično radi. Parametar /map mora specificirati ime i putanju do XML fajla koji sadrži direktive mapiranja. Ove direktive upućuju SolutionPackager da uporedi fajlove po njihovom imenu i putanji, i ukazuju na alternativnu lokaciju da pronađe odgovarajući fajl. Sledeća informacija se odnosi na sve direktive podjednako.

  • Može se navesti više direktiva, uključujući i one direktive koje odgovaraju identičnim fajlovima. Direktive navedene rano u datoteci imaju prednost nad direktivama navedenim kasnije.

  • Ako se datoteka podudara sa bilo kojom direktivom, mora se pronaći na najmanje jednoj alternativnoj lokaciji. Ako se ne pronađu odgovarajuće alternative, SolutionPackager izdaje grešku.

  • Putanje fascikli i datoteka mogu biti apsolutne ili relativne. Relativne putanje se uvek ocenjuju iz fascikle koja je navedena u parametru /folder.

  • Promenljive okruženja mogu se navesti upotrebom sintakse %variable%.

  • Džoker foldera "**" može da se koristi da znači "u bilo kom podfolderu". Može se koristiti samo kao završni deo putanje, na primer: "c:\folderA\**".

  • Džoker znakovi naziva datoteke mogu se koristiti samo u obliku „*.ext“ ili „*.*“. Nije podržan nijedan drugi šablon.

    Ovde su opisane tri vrste mapiranja direktiva, zajedno sa primerom koji vam pokazuje kako da ih koristite.

Mapiranje fascikle

Sledeće informacije pružaju detaljne informacije o mapiranju foldera.

KSML Format

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

Opis

Putanje datoteka koje odgovaraju "folderA" su prebačene u "folderB".

  • Hijerarhija potfascikli ispod svake od njih mora se tačno podudarati.

  • Džokeri foldera nisu podržani.

  • Ne možete navoditi nazive datoteka.

    Primeri

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

Mapiranje „datoteka u datoteku“

Sledeće informacije pružaju više detalja o mapiranju datoteka-datoteka.

KSML Format

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

Opis

Bilo koji fajl koji odgovara parametru map se čita iz imena i putanje navedene u parametru to .

Za parametar map:

  • Naziv datoteke mora biti naveden. Putanja je opcionalna. Ako putanja nije navedena, datoteke iz bilo koje fascikle mogu se podudarati.

  • Džokeri imena datoteka nisu podržani.

  • Džoker znak za fasciklu je podržan.

    Za parametar to:

  • Naziv datoteke i putanja moraju biti navedeni.

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

  • Džokeri imena datoteka nisu podržani.

  • Džoker znak za fasciklu je podržan.

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

U gornjem NuGet primeru paketa, cr886_PluginPackageTest.nupkg se ne prepisuje ako fajl već postoji na navedenoj lokaciji.

Mapiranje datoteke u putanju

U nastavku su navedene detaljne informacije o mapiranju „datoteka u putanju“.

KSML Format

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

Opis

Svaka datoteka koja odgovara parametru map se čita iz putanje navedene u parametru to.

Za parametar map:

  • Naziv datoteke mora biti naveden. Putanja je opcionalna. Ako putanja nije navedena, datoteke iz bilo koje fascikle mogu se podudarati.

  • Džoker znakovi za naziv datoteke su podržani.

  • Džoker znak za fasciklu je podržan.

Za parametar to:

  • Putanja mora biti navedena.

  • Džoker znak za fasciklu je podržan.

  • Naziv datoteke ne sme da bude naveden.

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

Primer mapiranja

Sledeći uzorak XML koda prikazuje kompletnu datoteku mapiranja koja omogućava alatki SolutionPackager da čita bilo koji veb-resurs i dva podrazumevana generisana sklopa iz projekta u kompletu alatki za projektante pod nazivom 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>  

O kompletnim i nekompletnim rešenjima

Dataverse komprimovana (.zip) datoteka rešenja može se izvesti u jedan od dva tipa, kao što je ovde prikazano.

Upravljano rešenje
Završeno rešenje spremno za uvoz u organizaciju. Jednom uvezene komponente se ne mogu dodavati ili uklanjati, mada mogu opcionalno omogućiti dalje prilagođavanje. Ovo se preporučuje kada je razvoj rešenja završen.

Neupravljano rešenje
Otvoreno rešenje bez ograničenja šta se može dodati, ukloniti ili izmeniti. Ovo se preporučuje tokom razvoja rešenja.

Format komprimovane datoteke rešenja će se razlikovati u zavisnosti od tipa, bilo da kompletno ili nekompletno. SolutionPackager može da obradi komprimovane datoteke rešenja bilo kog tipa. Međutim, alatka ne može da konvertuje jedan tip u drugi. Jedini način konvertovanja datoteka rešenja u drugi tip, na primer iz nekompletnog rešenja u kompletno, jeste putem uvoza .zip datoteke nekompletnog rešenja u Dataverse server, a zatim izvozom tog rešenja kao kompletnog.

SolutionPackager može da obraditi .zip datoteke nekompletnog i kompletnog rešenja kao kombinovani skup preko parametra /PackageType:Both. Da biste obavili ovu operaciju, potrebno je da izvezete rešenje dva puta za svaki tip, dajući naziv .zip datotekama na sledeći način.

.zip datoteka nekompletnog rešenja: BiloKojeIme.zip .zip datoteka kompletnog rešenja: BiloKojeIme_managed.zip

Alatka će pretpostaviti prisustvo zip datoteke kompletnog rešenja u istoj fascikli kao i datoteka nekompletnog rešenja i raspakovaće obe datoteke u jednu fasciklu, održavajući razlike tamo gde postoje kompletne i nekompletne komponente.

Kada se rešenje raspakuje kao nekompletno i kompletno, moguće je iz te jedne fascikle spakovati oba tipa ili svaki tip pojedinačno, korišćenjem parametra /PackageType da biste odredili koji tip da kreirate. Kada specificirate oba fajla, dva .zip fajla će biti proizvedena koristeći konvenciju imenovanja kao gore. Ako nedostaje parametar /PackageType prilikom pakovanja iz dvostruke fascikle kompletnog i nekompletnog rešenja, podrazumevano je da se napravi jedna .zip datoteka nekompletnog rešenja.

Rešavanje problema

Ako koristite Visual Studio da biste izmenili datoteke resursa kreirane u alatki za pravljenje paketa rešenja, možda ćete pri ponovnom pakovanju 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 dešava zato što Visual Studio zamenjuje oznake metapodataka datoteke resursa oznakama podataka.

Zaobilazno rešenje

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

    Na primer, ova niska:

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

    Menja se u:

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

    To omogućava uređaju za pakovanje rešenja da čita i uvozi datoteku resursa. Ovaj problem je primećen samo kada koristite Visual Studio uređivač resursa.

Takođe pogledajte

Koristite kontrolu izvornog koda sa datotekama rešenja
Koncepti rešenja