Nota
L'accés a aquesta pàgina requereix autorització. Podeu provar d'iniciar la sessió o de canviar els directoris.
L'accés a aquesta pàgina requereix autorització. Podeu provar de canviar els directoris.
SolutionPackager és una eina que pot descompondre reversiblement un fitxer de solució comprimida de Microsoft Dataverse en múltiples 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'incorporen a la CLI de Power Platform. La pac solution comanda té molts verbs, incloent-hi unpack, pack, clone, i sync que incorporen les mateixes capacitats subjacents de l'eina SolutionPackager.
On trobar l'eina Empaquetador de solucions
L'eina SolutionPackager es distribueix com a part del Microsoft. CrmSdk.CoreTools Paquet NuGet. Per instal·lar el programa, seguiu aquests passos.
- Descarrega el NuGet paquet.
- Canvieu el nom de l'extensió del nom de fitxer del paquet de .nupkg a .zip.
- 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ó |
|---|---|
| /acció: {Extracte|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: <camí del fitxer> | 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: <camí de la carpeta> | 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: {No gestionat|Gestionat|Tots dos} | 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 l'atribut de només lectura no s'escriuen ni s'eliminen. |
| /errorlevel: {Desactivat|Error|Avís |Informació|Verbose} | Opcional. Info és el valor per defecte. Aquest argument indica el nivell d'informació de registre a la sortida. |
| /map: <camí del fitxer> | 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ó de pack, els fitxers que coincideixen amb les directrius no s'escriuen. |
| /nologo | Opcional. Suprimeix el bàner en temps d'execució. |
| /log: <camí del fitxer> | 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. |
| Camí del fitxer @ <> | Opcional. El camí i el nom d'un fitxer que conté arguments de la línia d'ordres per a l'eina. |
| /sourceLoc: <cadena> | 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 |
| /SolutionName: <nom> | Opcional. El nom únic de la solució a empaquetar o extreure quan la carpeta font conté múltiples solucions sota solutions/*/solution.yml. És necessari quan es detecten més d'una solució. Només s'aplica al format de control de versions YAML. Pots utilitzar la forma abreujada de l'ordre: /sn. |
| /remapPluginTypeNames | Opcional. Quan s'especifica, els noms de tipus totalment qualificats del connector es remapeguen segons els conjunts inclosos a la solució. Activat per defecte en el format de control de versions YAML. Pots utilitzar la forma abreujada de l'ordre: /fp. |
Formats de fitxer de control de versions
SolutionPackager admet la disposició de dues carpetes a l'hora d'extreure i empaquetar solucions.
Format XML (llegat)
El format original. Les metadades de la solució s'emmagatzemen a Other\Solution.xml i Other\Customizations.xml, i tots els fitxers components s'extreuen en una jerarquia de carpetes planes al costat d'aquests fitxers. Aquest format és el per defecte quan s'extreu un .zip fitxer sense més configuració.
Format de control de versions YAML
Introduït juntament amb la integració amb Dataverse Git, aquest format emmagatzema les metadades de la solució com a fitxers YAML distribuïts en una jerarquia estructurada de carpetes. És el format que s'escriu quan fas commit de solucions utilitzant la integració nativa de Git a Power Apps.
Avantatges respecte al format XML
- Produeix diferències per component més netes i llegibles en el control de versions
- Suporta múltiples solucions en una sola carpeta de repositori
- Els fitxers d'aplicacions
.msappCanvas i els fluxos moderns només són compatibles en aquest format - La reassignació del nom del tipus de connector està activada per defecte
Estructura de carpetes requerida
<rootFolder>/
├── solutions/
│ └── <SolutionUniqueName>/
│ ├── solution.yml (solution metadata)
│ ├── solutioncomponents.yml (paths to all component files)
│ ├── rootcomponents.yml (root-level components)
│ └── missingdependencies.yml (dependency info)
├── publishers/
│ └── <PublisherUniqueName>/
│ └── publisher.yml (publisher definition)
├── entities/ (entity components, if present)
├── workflows/ (classic workflows, if present)
├── modernflows/ (Power Automate cloud flows, if present)
├── canvasapps/ (canvas app .msapp files, if present)
└── [other component folders]/
Important
El format YAML es detecta automàticament per la presència d'una solutions/ subcarpeta que conté *solution.yml arxius.
Si els teus fitxers de manifest YAML (solution.yml, solutioncomponents.yml, i així successivament) es col·loquen a l'arrel de la carpeta en lloc de sota solutions/<SolutionUniqueName>/, l'eina no detecta el format YAML. L'eina torna a la ruta XML i informa d'un error enganyós sobre una manca Customizations.xmlde fitxers . Consulta Resolució de problemes per a informació sobre com solucionar aquest problema.
Més informació: Referència del format de control de versions YAML de la solució
Regles de detecció automàtica de format
| Condició | Format utilitzat |
|---|---|
solutions/*/solution.yml trobada — exactament una solució |
YAML, on el nom de la solució s'infereix de la carpeta |
solutions/*/solution.yml trobada — múltiples solucions |
format YAML, on es requereix l'argument /SolutionName |
No hi ha solutions/ cap subdirectori present |
Format XML (llegat) |
Empaquetant una carpeta en format YAML
La següent ordre empaqueta una carpeta en format YAML.
SolutionPackager.exe /action:Pack /zipfile:MySolution.zip /folder:C:\repos\myrepo
Empaquetament des d'una carpeta multi-solució
La següent ordre empaqueta una solució especificada en una carpeta multi-solució.
SolutionPackager.exe /action:Pack /zipfile:SolutionA.zip /folder:C:\repos\myrepo /SolutionName:SolutionA
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 "**" pot ser utilitzat per significar "en qualsevol subcarpeta". Només es pot utilitzar com a part final d'un camí, per exemple: "c:\folderA\**".
Les targetes comodins del nom del fitxer només es poden utilitzar en les formes "*.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ó
Les rutes de fitxer que coincideixen amb "folderA" 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ó gestionada
Solució completada preparada per importar-la en una organització. Un cop importats, els components no es poden afegir ni eliminar, tot i que opcionalment permeten una personalització addicional. 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. Tanmateix, 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
Missatge mostrat quan s'utilitza Visual Studio per editar fitxers de recursos
Si utilitzes Visual Studio per editar les etiquetes de recursos creades pel paquetador de la solució, pots rebre un missatge quan reempaquetes un missatge similar a aquest: "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ò passa perquè Visual Studio substitueix les etiquetes de metadades del fitxer de recursos per etiquetes de dades.
Solució alternativa
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">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 quan s'utilitza l'editor de recursos de Visual Studio.
Error: "No es pot trobar el fitxer requerit ...\Other\Customizations.xml" amb una carpeta YAML
Aquest error apareix quan executes SolutionPackager (o pac solution pack) contra una carpeta que conté fitxers YAML com solution.yml, però aquests fitxers es col·loquen a l'arrel de la carpeta en lloc de dins la subcarpeta requerida solutions/<SolutionUniqueName>/ .
Causa: L'eina detecta el format de control de versions YAML buscant una solutions/ subcarpeta que contingui *solution.yml arxius. Quan aquest directori no hi és, l'eina torna silenciosament al format XML (heretat) i espera Other\Customizations.xml. El missatge d'error resultant fa referència a un fitxer XML i no menciona YAML, cosa que és enganyosa.
Correcció: Reorganitza la carpeta perquè els fitxers de manifest YAML estiguin sota els camins correctes:
<rootFolder>/
solutions/<YourSolutionUniqueName>/ ← move solution.yml here
solution.yml
solutioncomponents.yml
rootcomponents.yml
missingdependencies.yml
publishers/<YourPublisherUniqueName>/
publisher.yml
Si has obtingut la carpeta d'un commit d'integració Git o pac solution clone, l'estructura de carpetes ja hauria de ser correcta. Una carpeta que només conté els fitxers YAML de primer nivell sense el solutions/ subdirectori representa una extracció incompleta i no es pot empaquetar directament.
Avís: component declarat a rootcomponents.yml no té fitxers font
Aquest avís apareix quan un component, com una aplicació canvas, apareix però rootcomponents.yml no existeixen fitxers font corresponents a la carpeta de components esperats (per exemple, canvasapps/<schema-name>/).
Efecte: L'eina encara té èxit (codi de sortida 0) i produeix un fitxer vàlid .zip , però el component declarat s'omet de la solució empaquetada.
Causa: La carpeta es produïa mitjançant una extracció parcial, o bé els fitxers font del component no s'incloïen al repositori. Per exemple, només es van comprometre els fitxers manifest de la solució i no l'aplicació canvas en si.
Correcció: Assegureu-vos que tots els components declarats a rootcomponents.yml tinguin els fitxers font corresponents presents a la carpeta. Per a aplicacions canvas, el .msapp fitxer ha d'existir sota canvasapps/<schema-name>/. Si falta algun fitxer, reexporta la solució completa des de Dataverse i desempaqueta-la de nou, o utilitza-la pac solution clone per obtenir una extracció completa.