Comparteix a través de


Eina Empaquetador de solucions

SolutionPackager és una eina que pot descompondre de manera reversible un Microsoft Dataverse fitxer de solució comprimit en diversos fitxers XML i altres fitxers. A continuació, podeu gestionar fàcilment aquests fitxers mitjançant un sistema de control de codi font. A les seccions següents es mostra com executar l'eina i com utilitzar l'eina amb solucions administrades i no administrades.

Important

L'eina SolutionPackager ja no és la manera recomanada de desempaquetar i empaquetar solucions. Les capacitats de l'eina SolutionPackager s'han incorporat a la Power Platform CLI. L'ordre pac solution té una sèrie de verbs que inclouen unpack, pack, clone, i que incorporen sync les mateixes capacitats subjacents de l'eina SolutionPackager.

On trobar l'eina Empaquetador de solucions

L'eina SolutionPackager es distribueix com a part de Microsoft. CrmSdk.CoreTools NuGet paquet. Per instal·lar el programa, seguiu aquests passos.

  1. Descarrega el NuGet paquet.
  2. Canvieu el nom de l'extensió del nom de fitxer del paquet de .nupkg a .zip.
  3. Extreu el contingut del fitxer comprimit (zip).

Cerqueu l'executable SolutionPackager.exe a la carpeta <extracted-folder-name>/contents/bin/coretools. Executeu el programa des de la carpeta coretools o afegiu aquesta carpeta al vostre PATH.

Arguments de la línia d'ordres de l'Empaquetador de solucions

L'Empaquetador de solucions és una eina de línia d'ordres que es pot invocar amb els paràmetres identificats a la taula següent.

Argument Descripció
/action: {Extract|Pack} Obligatori. L'acció que voleu dur a terme. L'acció pot ser o bé extreure un fitxer .zip de solució en una carpeta o empaquetar una carpeta en un fitxer .zip.
/zipfile: <file path> Obligatori. El camí i el nom d'un fitxer .zip de solució. En l'extreure, el fitxer ha d'existir i ser llegible. En empaquetar, el fitxer se substitueix.
/folder: <folder path> Obligatori. El camí a una carpeta. Quan extraieu, es crearà i s'omplirà aquesta carpeta amb fitxers de components. Quan s'empaqueta, aquesta carpeta ja ha d'existir i contenir fitxers de components extrets prèviament.
/packagetype: {Unmanaged|Managed|Both} Opcional. Tipus de paquet per processar. El valor per defecte és Unmanaged. Aquest argument es pot ometre en la majoria de vegades perquè el tipus de paquet es pot llegir des de l'interior del .zip o els fitxers dels components. Quan s'extreu i s'especifica Both, els fitxers .zip de solució administrada i no administrada han d'estar presents i es processen en una única carpeta. Quan s'especifica l'empaquetament i Ambdós, els fitxers de solució gestionada i no administrada .zip es produeixen des d'una carpeta. Per obtenir més informació, vegeu la secció sobre com treballar amb solucions administrades i no administrades més endavant en aquest article.
/allowWrite:{Yes|No} Opcional. Sí es el valor per defecte. Aquest argument només s'utilitza durant una extracció. Quan /allowWrite:No s'especifica, l'eina realitza totes les operacions, però se li impedeix l'escriptura o la supressió de fitxers. L'operació d'extracció es pot avaluar de manera segura sense sobreescriure o suprimir cap fitxer existent.
/allowDelete:{Yes|No|Prompt} Opcional. El valor per defecte és Prompt. Aquest argument només s'utilitza durant una extracció. Quan s'especifica /allowDelete:Yes, se suprimeixen automàticament els fitxers presents a la carpeta especificada pel paràmetre /folder que no s'esperen. Quan s'especifica /allowDelete:No, no es produeix cap supressió. Quan /allowDelete:Prompt s'especifica, la consola demana a l'usuari permetre o denegar totes les operacions de supressió. Si s'especifica /allowWrite:No, no es produeix cap supressió encara que també s'especifiqui /allowDelete:Yes.
/clobber Opcional. Aquest argument només s'utilitza durant una extracció. Quan /clobber s'especifica, els fitxers que tenen el conjunt d'atributs de només de lectura se sobreescriuran o se suprimeixen. Quan no s'especifica, els fitxers amb el conjunt d'atributs de només de lectura no se sobreescriuran o se suprimeixen.
/errorlevel: {Off|Error|Warning|Info|Verbose} Opcional. Info és el valor per defecte. Aquest argument indica el nivell d'informació de registre a la sortida.
/map: <file path> Opcional. El camí i el nom d'un fitxer .xml que conté les directives d'assignació de fitxers. Quan s'utilitza durant una extracció, els fitxers que normalment es llegeixen des de la carpeta especificada pel paràmetre /folder es llegeixen des d'ubicacions alternatives que s'especifiquen al fitxer d'assignació. Durant una operació d'empaquetament, els fitxers que coincideixen amb les directives no s'escriuen.
/nologo Opcional. Suprimeix el bàner en temps d'execució.
/log: <file path> Opcional. El camí i el nom d'un fitxer de registre. Si el fitxer ja existeix, la nova informació del registre s'afegirà al fitxer.
@ <file path> Opcional. El camí i el nom d'un fitxer que conté arguments de la línia d'ordres per a l'eina.
/sourceLoc: <string> Opcional. Aquest argument genera un fitxer de recursos de plantilla i només és vàlid a l'extracció.

Els valors possibles són auto o un codi LCID/ISO per a la llengua que voleu exportar. Quan s'utilitza aquest argument, els recursos de cadena de la configuració regional especificada s'extreuen com a fitxer .resx neutral. Si auto s'especifica o només la forma llarga o curta del commutador, s'utilitza la configuració regional base o la solució. Podeu utilitzar la forma curta de l'ordre: /src.
/localize Opcional. Extraieu o fusioneu tots els recursos de cadena en fitxers .resx. Podeu utilitzar la forma curta de l'ordre: /loc. L'opció de localització admet components compartits per als fitxers .resx. Més informació: Ús de recursos web RESX

Utilitzar l'argument de l'ordre /map

La discussió següent inclou detalls de l'ús de l'argument /map a l'eina Empaquetador de solucions.

Els fitxers que es generen en un sistema de compilació automatitzada, com ara fitxers .xap del Silverlight i assemblatges de complements, normalment no s'envien al control del codi font. És possible que els recursos web ja estiguin presents al control d'origen en ubicacions que no són directament compatibles amb l'eina SolutionPackager. En incloure el paràmetre /map, l'eina Empaquetador de solucions pot dirigir-se per llegir i empaquetar fitxers d'ubicacions alternatives i no des de l'interior de la carpeta d'extracció com faria normalment. El paràmetre /map ha d'especificar el nom i el camí d'un fitxer XML que contingui directives d'assignació. Aquestes directives indiquen al SolutionPackager que faci coincidir els fitxers pel seu nom i camí i indiqui la ubicació alternativa per trobar el fitxer coincident. La següent informació s'aplica a totes les directives de manera equitativa.

  • Es poden enumerar diverses directives, incloses aquelles directives que coincideixen amb fitxers idèntics. Les directives enumerades al principi del fitxer tenen prioritat sobre les directives enumerades més endavant.

  • Si un fitxer coincideix amb qualsevol directiva, s'ha de trobar en almenys una ubicació alternativa. Si no es troba cap alternativa coincident, el SolutionPackager emet un error.

  • Els camins de carpeta i fitxers poden ser absoluts o relatius. Els camins relatius són sempre avaluats des de la carpeta especificada pel paràmetre /folder.

  • Poden especificar-se variables d'entorn mitjançant la sintaxi %variable%.

  • Un comodí de carpeta "**" es pot utilitzar per significar "en qualsevol subcarpeta". Només es pot utilitzar com a part final d'un camí, per exemple: "c:\folderA\**".

  • Els comodins de nom del fitxer només es poden utilitzar com a "*.ext" o "*.*". No s'admet cap altre patró.

    Els tres tipus d'assignacions de directives es descriuen aquí, juntament amb un exemple que mostra com utilitzar-les.

Assignació de carpetes

La informació següent proporciona informació detallada sobre l'assignació de carpetes.

Xml Format

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

Descripció

Els camins dels fitxers que coincideixen amb "carpetA" es canvien a "folderB".

  • La jerarquia de subcarpetes de cadascuna ha de coincidir exactament.

  • No s'admeten comodins de carpeta.

  • No es pot especificar cap nom de fitxer.

    Exemples

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

Assignació de fitxer a fitxer

La informació següent proporciona més detalls sobre l'assignació de fitxer a fitxer.

Xml Format

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

Descripció

Qualsevol fitxer que coincideixi amb el map paràmetre es llegeix des del nom i el camí especificats en el paràmetre to .

Per al paràmetre map:

  • Cal especificar un nom de fitxer. El camí és opcional. Si no s'especifica cap camí, els fitxers de qualsevol carpeta poden coincidir.

  • No s'admeten comodins de nom de fitxer.

  • El comodí de carpeta s'admet.

    Per al paràmetre to:

  • Cal especificar un nom de fitxer i un camí.

  • El nom del fitxer pot diferir del nom en el paràmetre map.

  • No s'admeten comodins de nom de fitxer.

  • El comodí de carpeta s'admet.

Exemples

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

En l'exemple de paquet anterior NuGet , cr886_PluginPackageTest.nupkg no se sobreescriu si el fitxer ja existeix a la ubicació especificada.

Assignació de fitxer a camí

A continuació, es proporciona informació detallada de l'assignació de fitxer a camí.

Xml Format

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

Descripció

Qualsevol fitxer que coincideixi amb el paràmetre map es llegirà des del camí especificat al paràmetre to.

Per al paràmetre map:

  • Cal especificar un nom de fitxer. El camí és opcional. Si no s'especifica cap camí, els fitxers de qualsevol carpeta poden coincidir.

  • S'admeten els comodins de nom de fitxer.

  • El comodí de carpeta s'admet.

Per al paràmetre to:

  • Cal especificar un camí.

  • El comodí de carpeta s'admet.

  • No s'ha d'especificar un nom de fitxer.

    Exemples

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

Exemple d'assignació

L'exemple següent de codi XML mostra un fitxer d'assignació complet que permet a l'eina Empaquetador de solucions llegir qualsevol recurs web i els dos assemblatges generats per defecte d'un projecte de kit d'eines de desenvolupador anomenat 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>  

Solucions administrades i no administrades

Es pot exportar un fitxer de solució comprimida del Dataverse (.zip) en dos tipus com es mostra aquí.

solució administrada
Solució completada preparada per importar-la en una organització. Una vegada importats, els components no es poden afegir ni suprimir, tot i que opcionalment poden permetre més personalització. Això es recomana quan el desenvolupament de la solució es completi.

Solució no administrada
Una solució oberta sense restriccions sobre el que es pot afegir, suprimir o modificar. Això es recomana durant el desenvolupament d'una solució.

El format d'un fitxer de solució comprimida serà diferent en funció del seu tipus, ja sigui administrada o no administrada. L'Empaquetador de solucions pot processar fitxers de solució comprimits de qualsevol tipus. No obstant, l'eina no pot convertir un tipus en un altre. L'única manera de convertir els fitxers de la solució en un tipus diferent, per exemple de no administrat a administrat, és la importació del fitxer .zip de solució no administrada en un servidor del Dataverse i, a continuació, exportar la solució com a solució administrada.

L'Empaquetador de solucions pot processar els fitxers .zip de solucions no administrades i administrades com un conjunt combinat a través del paràmetre /PackageType:Both. Per dur a terme aquesta operació, és necessari exportar la solució dues vegades com a cada tipus, anomenant els fitxers .zip de la següent manera.

Fitxer .zip no administrat: AnyName.zip Fitxer .zip administrat: AnyName_managed.zip

L'eina assumirà la presència del fitxer zip administrat a la mateixa carpeta que el fitxer no administrat i extraurà els dos fitxers en una sola carpeta preservant les diferències en què hi ha components administrats i no administrats.

Després d'extreure una solució com a no administrada i administrada, és possible des de l'única carpeta empaquetar totes dues, o per a cada tipus, mitjançant el paràmetre /PackageType per especificar el tipus de creació. Quan s'especifiquen els dos fitxers, es produiran dos fitxers .zip utilitzant la convenció de nomenclatura anterior. Si el paràmetre /PackageType no hi és en empaquetar des d'una carpeta administrada o no administrada dual, el valor per defecte és produir un únic fitxer .zip no administrat.

Detecció d'errors

Si utilitzeu el Visual Studio per editar els fitxers de recursos creats per l'Empaquetador de solucions, pot ser que rebeu un missatge quan torneu a empaquetar semblant a: “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.” Això succeeix perquè el Visual Studio substitueix les etiquetes de metadades del fitxer de recursos amb etiquetes de dades.

Solució alternativa

  1. Obriu el fitxer de recursos al vostre editor de text favorit i localitzeu i actualitzeu les etiquetes següents:

    <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. Canvieu el nom del node de <data> a <metadata>.

    Per exemple, aquesta cadena:

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

    Canvia a:

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

    Això permet que l'Empaquetador de solucions llegeixi i importi el fitxer de recursos. Aquest problema només s'ha observat en utilitzar l'editor de recursos del Visual Studio.

Consulteu també

Utilitzar el control d'origen amb fitxers de solució
Conceptes de solució