Partajați prin


Instrumentul SolutionPackager

SolutionPackager este un instrument care poate descompune reversibil un Microsoft Dataverse fișier de soluție comprimat în mai multe fișiere XML și alte fișiere. Puteți gestiona cu ușurință aceste fișiere folosind un sistem de control al sursei. Următoarele secțiuni vă arată cum să rulați instrumentul și cum să utilizați instrumentul cu soluții gestionate și negestionate.

Important

Instrumentul SolutionPackager nu mai este modalitatea recomandată de despachetare și împachetare soluții. Capacitățile instrumentului SolutionPackager au fost încorporate în Power Platform CLI. Comanda pac solution are un număr de verbe, inclusiv unpack, pack, clone și sync care încorporează aceleași capacități de bază ale instrumentului SolutionPackager.

Unde să găsiți instrumentul SolutionPackager

Instrumentul SolutionPackager este distribuit ca parte a pachetului Microsoft.CrmSdk.CoreToolsNuGet. Pentru a instala programul, urmați acești pași.

  1. Descărcați pachetul NuGet .
  2. Redenumiți extensia numelui de fișier al pachetului din .nupkg în .zip.
  3. Extrageți conținutul fișierului comprimat (zip).

Găsiți executabilul SolutionPackager.exe în folderul <extracted-folder-name>/contents/bin/coretools. Rulați programul din folderul coretools sau adăugați acel folder în PATH.

Argumente din linia de comandă SolutionPackager

SolutionPackager este un instrument de linie de comandă care poate fi invocat cu parametrii identificați în tabelul următor.

Argument Descriere
/action: {Extract|Pachet} Necesar Acțiunea de efectuat. Acțiunea poate fi fie extragerea unui fișier .zip de soluție într-un folder, fie ambalarea unui folder într-un fișier .zip.
/zipfile: <cale fișier> Necesar Calea și numele unui fișier .zip al soluției. La extragere, fișierul trebuie să existe și să poată fi citit. La arhivare, fișierul este înlocuit.
/folder: <cale folder> Necesar Calea către un folder. La extragere, acest folder este creat și completat cu fișiere componente. La arhivare, acest folder trebuie să existe deja și să conțină fișiere de componente extrase anterior.
/packagetype: {Unmanaged|Managed|Ambele} Opțional. Tipul de pachet de procesat. Valoarea implicită este Negestionat. Acest argument poate fi omis în majoritatea ocaziilor, deoarece tipul pachetului poate fi citit din interiorul fișierului .zip sau fișierelor componente. La dezarhivare și când este specificat Ambele, fișierele .zip ale soluției gestionate și negestionate trebuie să fie prezente și sunt procesate într-un singur folder. Când se împachetează și se specifică Ambele, fișierele .zip ale soluției gestionate și neadministrate sunt produse dintr-un folder. Pentru mai multe informații, consultați secțiunea despre lucrul cu soluții gestionate și neadministrate mai târziu în acest articol.
/allowWrite:{Yes|No} Opțional. Valoarea implicită este Da. Acest argument este folosit doar în timpul unei extracții. Când/allowWrite:No este specificat, instrumentul efectuează toate operațiunile, dar este împiedicat să scrie sau să șterge orice fișier. Operația de extracție poate fi evaluată în siguranță fără a suprascrie sau a șterge fișierele existente.
/allowDelete:{Yes|No|Mesaj} Opțional. Valoarea implicită este Atenționare. Acest argument este folosit doar în timpul unei extracții. Când este specificat /allowDelete:Yes, toate fișierele prezente în folderul specificat de parametrul /folder care nu sunt așteptate sunt șterse automat. Când este specificat /allowDelete:Nu, nu au loc ștergeri. Când /allowDelete:Prompt este specificat, utilizatorul este solicitat prin intermediul consolei să permită sau să refuze toate operațiunile de ștergere. Dacă este specificat /allowWrite:Nu, nu au loc ștergeri, chiar dacă este specificat și /allowDelete:Yes.
/clobber Opțional. Acest argument este folosit doar în timpul unei extracții. Când este specificat /clobber, fișierele care au atributul numai de citire sunt suprascrise sau șterse. Când nu este specificat, fișierele cu atributul numai de citire nu sunt suprascrise sau șterse.
/errorlevel: {Off|Error|Warning|Info|Verbose} Opțional. Valoarea implicită este Info. Acest argument indică nivelul de înregistrare a informațiilor la ieșire.
/map: <cale fișier> Opțional. Calea și numele unui fișier .xml care conține directive de mapare a fișierelor. Când sunt utilizate în timpul unei extracții, fișierele citite de obicei din interiorul folderului specificat de parametrul /folder sunt citite din alte locații, așa cum este specificat în fișierul de mapare. În timpul unei operații de arhivare, fișierele care corespund directivelor nu sunt scrise.
/nologo Opțional. Suprimați banner-ul la timpul de execuție.
/log: <cale fișier> Opțional. O cale și un nume către un fișier jurnal. Dacă fișierul există deja, noi fișiere de înregistrare sunt adăugate la fișier.
@ <cale fișier> Opțional. O cale și un nume către un fișier care conține argumente din linia de comandă pentru instrument.
/sourceLoc: <șir> Opțional. Acest argument generează un fișier de resurse șablon și este valabil doar la dezarhivare.

Valorile posibile sunt auto sau un cod LCID/ISO pentru limba pe care doriți să o exportați. Când este utilizat acest argument, resursele șir din localul dat sunt extrase ca fișier .resx neutru. Dacă este specificată auto sau doar forma lungă sau scurtă a comutatorului, se utilizează setarea regională sau soluția. Puteți utiliza forma scurtă a comenzii: /src.
/localizare Opțional. Extrageți sau îmbinați toate resursele șir în fișiere .resx. Puteți utiliza forma scurtă a comenzii: /loc. Opțiunea de localizare acceptă componente partajate pentru fișierele .resx. Mai multe informații: Utilizarea resurselor web RESX

Folosiți argumentul comenzii /map

Următoarea discuție detaliază utilizarea argumentului /map la instrumentul SolutionPackager.

Fișierele care sunt construite într-un sistem automat de construire, cum ar fi fișierele .xap Silverlight și ansamblurile de inserturi, de obicei nu sunt verificate în controlul sursei. Resursele web pot fi deja prezente în controlul sursei în locații care nu sunt direct compatibile cu instrumentul SolutionPackager. Prin includerea parametrului /hartă, instrumentul SolutionPackager poate fi direcționat să citească și să împacheteze astfel de fișiere din alte locații și nu din interiorul folderului Extract, așa cum ar fi de obicei. Parametrul /map trebuie să specifice numele și calea către un fișier XML care conține directivele mapare. Aceste directive indică SolutionPackager să potrivească fișierele după numele și calea lor și indică locația alternativă pentru a găsi fișierul potrivit. Informațiile următoare se aplică tuturor directivelor în mod egal.

  • Pot fi listate mai multe directive, inclusiv acele directive care se potrivesc cu fișiere identice. Directivele enumerate la începutul fișierului au prioritate față de directivele enumerate mai târziu.

  • Dacă un fișier se potrivește cu orice directivă, acesta trebuie să fie găsit în cel puțin o locație alternativă. Dacă nu se găsesc alternative care să se potrivească, SolutionPackager emite o eroare.

  • Căile de dosar și fișier pot fi absolute sau relative. Căile relative sunt întotdeauna evaluate din folderul specificat de parametrul /folder.

  • Variabilele de mediu pot fi specificate utilizând o sintaxă de tip %variable%.

  • Un wildcard de folder „**” poate fi folosit pentru a însemna „în orice subdosar”. Poate fi folosit doar ca parte finală a unei căi, de exemplu: „c:\folderA\**”.

  • Numele de fișiere wildcards pot fi utilizate doar în formele „*.ext” sau ”*.*”. Nu este acceptat niciun alt model.

    Cele trei tipuri de mapări de directive sunt descrise aici, împreună cu un exemplu care vă arată cum să le utilizați.

Mapare de folder

Următoarele informații oferă informații detaliate despre folderul mapare.

Format Xml

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

Descriere

Căile fișierelor care se potrivesc cu „folderA” sunt schimbate la „folderB”.

  • Ierarhia subfolderelor de sub fiecare trebuie să se potrivească exact.

  • Caracterele metalice ale folderului nu sunt acceptate.

  • Nu se pot specifica nume de fișiere.

    Exemple

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

Mapare Fișier la fișier

Următoarele informații oferă mai multe detalii despre fișier-la-fișier mapare.

Format Xml

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

Descriere

Orice fișier care se potrivește cu parametrul map este citit din numele și calea specificate în parametrul to .

Pentru parametrul map:

  • Trebuie specificat un nume de fișier. Calea este opțională. Dacă nu este specificată nicio cale, fișierele din orice dosar pot fi potrivite.

  • Caracterele metalice pentru numele fișierului nu sunt acceptate.

  • Se acceptă wildcard-ul folderului.

    Pentru parametrul to:

  • Trebuie specificat un nume de fișier și o cale.

  • Numele fișierului poate diferi de numele din parametrul map.

  • Caracterele metalice pentru numele fișierului nu sunt acceptate.

  • Se acceptă wildcard-ul folderului.

Exemple

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

În exemplul de pachet NuGet de mai sus, cr886_PluginPackageTest.nupkg nu este suprascris dacă fișierul există deja în locația specificată.

Mapare fișier la cale

Următoarele oferă informații detaliate despre maparea fișier-la-cale.

Format Xml

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

Descriere

Orice fișier care se potrivește cu parametrul map este citit din numele și calea specificate în parametrul to.

Pentru parametrul map:

  • Trebuie specificat un nume de fișier. Calea este opțională. Dacă nu este specificată nicio cale, fișierele din orice dosar pot fi potrivite.

  • Wildcardurile de nume de fișier sunt acceptate.

  • Se acceptă wildcard-ul folderului.

Pentru parametrul to:

  • Trebuie specificată o cale.

  • Se acceptă wildcard-ul folderului.

  • Nu trebuie specificat un nume de fișier.

    Exemple

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

Exemplu de mapare

Următorul exemplu de cod XML arată un fișier de mapare complet care permite instrumentului SolutionPackager să citească orice resursă web și cele două ansambluri generate implicit dintr-un proiect de instrument pentru dezvoltatori numit 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>  

Soluții gestionate și negestionate

A fișier Dataverse cu soluție comprimată (.zip) poate fi exportat într-unul din două tipuri, așa cum se arată aici.

Soluție gestionată
O soluție completată gata de a fi importată într-o organizație. Odată importate, componentele nu pot fi adăugate sau eliminate, deși opțional pot permite particularizarea ulterioară. Acest lucru este recomandat atunci când dezvoltarea soluției este completă.

Soluţie negestionată
O soluție deschisă fără restricții cu privire la ceea ce poate fi adăugat, eliminat sau modificat. Acest lucru este recomandat în timpul dezvoltării unei soluții.

Formatul unui fișier cu soluții comprimate va fi diferit în funcție de tipul său, fie gestionat, fie negestionat. SolutionPackager poate prelucra fișiere cu soluție comprimată de orice tip. Cu toate acestea, instrumentul nu poate converti un tip în altul. Singura modalitate de a converti fișierele de soluție la un alt tip, de exemplu, de la neadministrat la gestionat, este importând fișierul .zip al soluției neadministrate într-un server Dataverse și exportați soluția sub forma de soluție gestionată.

SolutionPackager poate prelucra fișiere .zip neadministrate și soluție gestionată ca un set combinat prin parametrul /PackageType:Ambii parametri. Pentru a efectua această operație, este necesar să exportați soluția de două ori mai mult decât fiecare tip, denumind fișierele .zip după cum urmează.

Fișier .zip negestionat: AnyName.zip Fișier .zip gestionat: AnyName_managed.zip

Instrumentul va presupune prezența fișierului zip gestionat în același dosar ca fișierul negestionate și va extrage ambele fișiere într-un singur folder păstrând diferențele în care există componente gestionate și negestionate.

După ce o soluție a fost extrasă atât ca neadministrată, cât și administrată, este posibil ca din acel singur folder să fie ambalate ambele, sau fiecare tip individual, folosind parametrul /PackageType pentru a specifica ce tip să creeze. Când specificați ambele fișiere, două fișiere .zip vor fi produse folosind convenția de denumire ca mai sus. Dacă parametrul /PackageType lipsește la ambalarea dintr-un folder gestionat dual și negestionat, implicit este să se producă un singur fișier .zip negestionat.

Depanare

Dacă utilizați Visual Studio pentru a edita fișiere de resurse create de instrumentul de împachetare soluții, puteți primi un mesaj când rearhivați, similar cu acesta: “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.” Aceasta se întâmplă pentru că Visual Studio înlocuiește etichetele de metadate ale fișierului resursă cu etichete de date.

Soluție

  1. Deschideți fișierul de resurse în editorul de text preferat și localizați și actualizați următoarele etichete:

    <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. Schimbați numele nodului din <data> în <metadata>.

    De exemplu, acest șir:

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

    Se modifică în:

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

    Aceasta permite instrumentului de împachetare soluții să citească și să importe fișierul de resurse. Această problemă a fost observată numai atunci când se utilizează Editorul de resurse Visual Studio.

Consultați și

Utilizați controlul sursei cu fișiere de soluții
Concepte de soluție