Bemærk
Adgang til denne side kræver godkendelse. Du kan prøve at logge på eller ændre mapper.
Adgang til denne side kræver godkendelse. Du kan prøve at ændre mapper.
SolutionPackager er et værktøj, der kan omdanne en Microsoft Dataverse komprimeret løsningsfil til flere XML-filer og andre filer. Du kan derefter nemt administrere disse filer ved hjælp af et kildekontrolsystem. I følgende afsnit kan du se, hvordan du kører værktøjet, og hvordan du bruger værktøjet med administrerede og ikke-administrerede løsninger.
Vigtig
Værktøjet SolutionPackager er ikke længere den anbefalede måde at pakke løsninger ud på. Funktionerne i SolutionPackager-værktøjet er indbygget i kommandolinjegrænsefladen til Power Platform. Kommandoen pac solution indeholder mange verber, herunder unpack, pack, cloneog sync som indeholder de samme underliggende funktioner i SolutionPackager-værktøjet.
Hvor finder du SolutionPackager-værktøjet
SolutionPackager-værktøjet distribueres som en del af NuGet-pakken Microsoft.CrmSdk.CoreTools . Følg denne fremgangsmåde for at installere programmet.
- Download NuGet-pakken.
- Omdøb filtypenavnet for pakken fra .nupkg til .zip.
- Udpak indholdet i den komprimerede fil (zip).
Find den SolutionPackager.exe eksekverbare i mappen <extracted-folder-name>/contents/bin/coretools. Kør programmet fra mappen coretools, eller føj mappen til STIEN.
SolutionPackager kommandolinjeargumenter
SolutionPackager er et kommandolinjeværktøj, der kan aktiveres med de parametre, der er identificeret i følgende tabel.
| Skænderi | Beskrivende tekst |
|---|---|
| /action: {Uddrag|Pakke} | Påkrævet. Den handling, der skal udføres. Handlingen kan enten være at udpakke en løsning .zip fil til en mappe eller at pakke en mappe ind i en .zip fil. |
| /zipfile: <filsti> | Påkrævet. Stien til og navnet på en løsningsfil .zip. Ved udpakning skal filen findes, og den skal kunne læses. Ved pakning udskiftes filen. |
| /mappe: <mappevej> | Påkrævet. Stien til en mappe. Når du udpakker, oprettes denne mappe og udfyldes med komponentfiler. Når du pakker, skal denne mappe allerede eksistere og indeholde tidligere udpakkede komponentfiler. |
| /packagetype: {Ikke administreret|Administreret|Begge dele} | Valgfrit. Den type pakke, der skal behandles. Standardværdien er Ikke-administreret. Dette argument kan udelades i de fleste tilfælde, fordi pakketypen kan læses inde fra .zip filen eller komponentfilerne. Når udpakning og Begge er angivet, skal administrerede og ikke-administrerede løsningsfiler .zip være til stede og behandles i en enkelt mappe. Når pakning og Både er angivet, bliver administrerede og ikke-administrerede .zip-løsningsfiler produceret fra én mappe. Du kan finde flere oplysninger i afsnittet om at arbejde med administrerede og ikke-administrerede løsninger senere i denne artikel. |
| /allowWrite:{Ja|Nej} | Valgfrit. Standardværdien er Ja. Dette argument bruges kun under en udtrækning. Når /allowWrite:No er angivet, udfører værktøjet alle handlinger, men forhindres i at skrive eller slette filer. Udpakningsoperationen kan vurderes sikkert uden at overskrive eller slette eksisterende filer. |
| /allowDelete:{Ja|Nej|Spørg} | Valgfrit. Standardværdien er Spørg. Dette argument bruges kun under en udtrækning. Når /allowDelete:Ja er angivet, slettes automatisk alle filer i den mappe, der er angivet af parameteren /folder, som ikke er forventede. Når /allowDelete:No er angivet, foretages der ingen sletning. Når /allowDelete:Prompt er angivet, bliver brugeren via konsollen bedt om at tillade eller afvise alle sletningshandlinger. Hvis /allowWrite:No er angivet, sker der ingen sletning, selvom /allowDelete:Yes også er angivet. |
| /clobber | Valgfrit. Dette argument bruges kun under en udtrækning. Når /clobber er angivet, bliver filer med skrivebeskyttet attribut overskrevet eller slettet. Når det ikke er specificeret, bliver filer med skrivebeskyttet attribut ikke overskrevet eller slettet. |
| /errorlevel: {Deaktiveret|Fejl|Advarsel|Info|Verbose} | Valgfrit. Standardværdien er Info. Dette argument angiver niveauet af logføringsoplysninger, der skal outputtes. |
| /map: <filsti> | Valgfrit. Stien til og navnet på en .xml fil, der indeholder filtilknytningsdirektiver. Når de bruges under en udtrækning, læses filer, der typisk læses inde fra den mappe, der er angivet af parameteren /folder, fra alternative placeringer som angivet i tilknytningsfilen. Under en pakkehandling skrives filer, der svarer til direktiverne, ikke. |
| /nologo | Valgfrit. Undertryk banneret under kørsel. |
| /log: <filsti> | Valgfrit. En sti og et navn til en logfil. Hvis filen allerede findes, føjes nye logføringsoplysninger til filen. |
| @ <filsti> | Valgfrit. En sti og et navn til en fil, der indeholder kommandolinjeargumenter for værktøjet. |
| /sourceLoc: <streng> | Valgfrit. Dette argument genererer en skabelonressourcefil og er kun gyldig ved udtræk. Mulige værdier er auto eller en LCID/ISO-kode for det sprog, du vil eksportere. Når dette argument bruges, udtrækkes strengressourcerne fra den givne landestandard som en neutral .resx-fil. Hvis auto eller kun den lange eller korte form af switchen er angivet, bruges basislokaliteten eller løsningen. Du kan bruge den korte form af kommandoen: /src. |
| /lokalisere | Valgfrit. Udpak eller flet alle strengressourcer til .resx-filer. Du kan bruge den korte form af kommandoen: /loc. Oversættelsesindstillingen understøtter delte komponenter for .resx-filer. Flere oplysninger: Brug af RESX-webressourcer |
| /SolutionName: <navn> | Valgfrit. Det entydige navn på den løsning, der skal pakkes eller pakkes ud, når kildemappen indeholder flere løsninger under solutions/*/solution.yml. Påkrævet, når der registreres mere end én løsning. Gælder kun for YAML-versionsstyringsformatet. Du kan bruge den korte form af kommandoen: /sn. |
| /remapPluginTypeNames | Valgfrit. Når det er angivet, omdannes plug-ins fuldt kvalificerede typenavne baseret på de assembly'er, der er inkluderet i løsningen. Aktiveret som standard i YAML-versionsstyringsformatet. Du kan bruge den korte form af kommandoen: /fp. |
Filformater for kildekontrol
SolutionPackager understøtter to mappelayout ved udpakning og pakning af løsninger.
XML-format (ældre)
Det oprindelige format. Løsningsmetadata gemmes i Other\Solution.xml og Other\Customizations.xml, og alle komponentfiler pakkes ud i et fladt mappehierarki sammen med disse filer. Dette format er standardformatet, når du udtrækker en .zip fil uden mere konfiguration.
YAML-kildekontrolformat
Dette format blev introduceret sammen med Dataverse Git-integration og gemmer løsningsmetadata som YAML-filer, der distribueres på tværs af et struktureret mappehierarki. Det er det format, der skrives, når du sender løsninger ved hjælp af oprindelig Git-integration i Power Apps.
Fordele i forhold til XML-format
- Producerer renere og mere læsbare diff'er pr. komponent i kildestyring
- Understøtter flere løsninger i en enkelt lagermappe
- Lærredsapp-filer
.msappog moderne workflows understøttes kun i dette format - Omdøbning af plug-in-type navn er som standard aktiveret
Påkrævet mappestruktur
<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]/
Vigtig
YAML-formatet registreres automatisk af tilstedeværelsen af en solutions/ undermappe, der indeholder *solution.yml filer.
Hvis YAML-manifestfilerne (solution.yml, solutioncomponents.ymlosv.) placeres i roden af mappen i stedet for under solutions/<SolutionUniqueName>/, registrerer værktøjet ikke YAML-formatet. Værktøjet går tilbage til XML-stien og rapporterer en vildledende fejl om en manglende Customizations.xml. Se Fejlfinding for at få oplysninger om, hvordan du løser dette problem.
Flere oplysninger: Reference til YAML-kildekontrolformat for løsning
Formatér regler for automatisk registrering
| Betingelse | Brugt format |
|---|---|
solutions/*/solution.yml fundet – præcis én løsning |
YAML-format, hvor løsningsnavnet udledes fra mappen |
solutions/*/solution.yml fundet — flere løsninger |
YAML-format, hvor argumentet /SolutionName er påkrævet |
Der findes ingen solutions/ undermappe |
XML-format (ældre) |
Pakning af en YAML-formatmappe
Følgende kommando pakker en YAML-formatmappe.
SolutionPackager.exe /action:Pack /zipfile:MySolution.zip /folder:C:\repos\myrepo
Pakning fra en mappe med flere løsninger
Følgende kommando pakker en angivet løsning i en mappe med flere løsninger.
SolutionPackager.exe /action:Pack /zipfile:SolutionA.zip /folder:C:\repos\myrepo /SolutionName:SolutionA
Brug kommandoargumentet /map
Følgende diskussion beskriver brugen af argumentet /map til værktøjet SolutionPackager.
Filer, der er indbygget i et automatiseret build-system, f.eks. Silverlight .xap-filer og plug-in-assemblier, bliver typisk ikke logget på kildekontrolelementet. Webressourcer kan allerede være til stede i versionskontrolelementet på steder, ikke der er direkte kompatible med SolutionPackager-værktøjet. Ved at inkludere parameteren /map kan SolutionPackager-værktøjet dirigeres til at læse og pakke sådanne filer fra alternative placeringer og ikke inde fra Extract-mappen, som det typisk ville gøres. Parameteren /map skal angive navnet og stien til en XML-fil, der indeholder tilknytningsparameteren. Disse parametre giver SolutionPackager besked om at matche filerne efter navn og sti og at angive, hvilken alternativ placering den matchede fil skal findes på. Følgende oplysninger gælder for alle direktiver på samme måde.
Flere direktiver kan angives, herunder de parametre, der matcher identiske filer. Parametrene, der står tidligt i filen, går forud for de parametre, der er angivet senere.
Hvis en fil er matchet med et direktiv, skal den findes på mindst én alternativ placering. Hvis der ikke findes nogen tilsvarende alternativer, udsender SolutionPackager en fejl.
Mappe- og filstier kan være absolutte eller relative. Relative stier evalueres altid fra den mappe, der er angivet af parameteren /folder.
Miljøvariabler kan angives ved hjælp af en %variable% syntaks.
Et mappe jokertegn "**" kan bruges til at betyde "i en hvilken som helst undermappe". Den kan kun bruges som den sidste del af en sti, f.eks.: "c:\folderA\**".
Filnavnets jokertegn må kun bruges i formularerne "*.ext" eller "*.*". Der understøttes ikke andet mønster.
De tre typer direktivtilknytninger er beskrevet her sammen med et eksempel, der viser, hvordan du bruger dem.
Mappetilknytning
Følgende oplysninger indeholder detaljerede oplysninger om mappetilknytning.
XML-format
<Folder map="folderA" to="folderB" />
Beskrivelse
Filstier, der svarer til "folderA", ændres til "folderB".
Hierarkiet af undermapper under hver mappe skal være identisk.
Mappejokertegn understøttes ikke.
Der må ikke angives filnavne.
Eksempler
<Folder map="folderA" to="folderB" /> <Folder map="folderA\folderB" to="..\..\folderC\" /> <Folder map="WebResources\subFolder" to="%base%\WebResources" />
Fil til fil-tilknytning
Følgende oplysninger indeholder flere detaljer om fil til fil-tilknytning.
XML-format
<FileToFile map="path\filename.ext" to="path\filename.ext" />
Beskrivelse
Enhver fil, der svarer til map-parameteren, læses fra navnet og stien, der er angivet i to-parameteren.
Angående parameteren map :
Der skal angives et filnavn. Stien er valgfri. Hvis der ikke er angivet en sti, kan filer fra en hvilken som helst mappe matches.
Jokertegn understøttes ikke i filnavne.
Mappejokertegn understøttes.
Angående parameteren
to:Der skal angives et filnavn og en sti.
Filnavnet kan afvige fra navnet i parameteren
map.Jokertegn understøttes ikke i filnavne.
Mappejokertegn understøttes.
Eksempler
<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" />
I eksemplet ovenfor med NuGet-pakke overskrives cr886_PluginPackageTest.nupkg ikke, hvis filen allerede findes på den angivne placering.
Tilknytning mellem fil og sti
Følgende indeholder detaljerede oplysninger om fil-til-sti-tilknytning.
XML-format
<FileToPath map="path\filename.ext" to="path" />
Beskrivelse
Alle filer, der matcher parameteren map , læses fra den sti, der er angivet i parameteren to .
Angående parameteren map :
Der skal angives et filnavn. Stien er valgfri. Hvis der ikke er angivet en sti, kan filer fra en hvilken som helst mappe matches.
Jokertegn til filnavne understøttes.
Mappejokertegn understøttes.
Angående parameteren to :
Der skal angives en sti.
Mappejokertegn understøttes.
Der må ikke angives et filnavn.
Eksempler
<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" />
Eksempel på kortlægning
Følgende XML-kodeeksempel viser en komplet tilknytningsfil, der gør det muligt for SolutionPackager-værktøjet at læse en hvilken som helst webressource og de to standardgenererede assemblies fra et Developer Toolkit-projekt med navnet 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>
Administrerede og ikke-administrerede løsninger
En Dataverse-komprimeret løsningsfil (.zip) kan eksporteres i en af to typer, som vist her.
Administreret løsning
En færdig løsning, der er klar til at blive importeret til en organisation. Når komponenterne er importeret, kan de ikke tilføjes eller fjernes, selvom de eventuelt kan tillade yderligere tilpasning. Dette anbefales, når udviklingen af løsningen er færdig.
Ikke-administreret løsning
En åben løsning uden begrænsninger for, hvad der kan tilføjes, fjernes eller ændres. Dette anbefales under udvikling af en løsning.
Formatet på en komprimeret løsningsfil vil være forskelligt afhængigt af dens type, enten administreret eller ikke-administreret. SolutionPackager kan behandle komprimerede løsningsfiler af begge typer. Værktøjet kan dog ikke konvertere én type til en anden. Den eneste måde at konvertere løsningsfiler til en anden type, for eksempel fra ikke-administreret til administreret, er ved at importere den ikke-administrerede løsnings-.zip-fil til en Dataverse-server og derefter eksportere løsningen som en administreret løsning.
SolutionPackager kan behandle ikke-administrerede og administrerede løsningsfiler .zip som et kombineret sæt via parameteren /PackageType:Both. For at udføre denne handling er det nødvendigt at eksportere din løsning to gange som hver type og navngive de .zip filer som følger.
Ikke-administreret .zip fil: AnyName.zip
Administreret .zip-fil: AnyName_managed.zip
Værktøjet antager, at den administrerede zip-fil er til stede i den samme mappe som den ikke-administrerede fil, og udpakker begge filer i en enkelt mappe, og bevarer forskellene, hvor der findes administrerede og ikke-administrerede komponenter.
Når en løsning er blevet udtrukket som både ikke-administreret og administreret, er det muligt at pakke begge eller hver type individuelt fra den enkelte mappe ved hjælp af parameteren /PackageType til at angive, hvilken type der skal oprettes. Når du angiver dem begge filer, bliver to .zip-filer produceret ved hjælp af navngivningskonventionen ovenfor. Hvis parameteren /PackageType mangler, når du pakker fra en dobbeltadministreret og ikke-administreret mappe, er standarden at oprette en enkelt ikke-administreret .zip fil.
Fejlfinding
Meddelelse, der vises, når du bruger Visual Studio til at redigere ressourcefiler
Hvis du bruger Visual Studio til at redigere ressourcefsiles, der er oprettet af løsningspakkeren, modtager du muligvis en meddelelse, når du pakker igen i stil med dette: "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." Dette sker, fordi Visual Studio erstatter ressourcefilens metadatakoder med datakoder.
Løsning
Åbn ressourcefilen i din foretrukne teksteditor, og find og opdater følgende tags:
<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">Skift nodenavnet fra
<data>til<metadata>.For eksempel denne streng:
<data name="Source LCID" xml:space="preserve"> <value>1033</value> </data>Ændringer til:
<metadata name="Source LCID" xml:space="preserve"> <value>1033</value> </metadata>Dette gør det muligt for løsningspakkeren at læse og importere ressourcefilen. Dette problem er kun blevet observeret ved brug af Visual Studio Resource Editor.
Fejl! "Den nødvendige fil ...\Other\Customizations.xml" blev ikke fundet med en YAML-mappe
Denne fejl vises, når du kører SolutionPackager (eller pac solution pack) mod en mappe, der indeholder YAML-filer, f.eks solution.yml. , men disse filer placeres i roden af mappen i stedet for i den påkrævede solutions/<SolutionUniqueName>/ undermappe.
Forårsage: Værktøjet registrerer YAML-kildekontrolformatet ved at søge efter en solutions/ undermappe, der indeholder *solution.yml filer. Når mappen ikke findes, går værktøjet automatisk tilbage til XML-formatet (ældre) og forventer Other\Customizations.xml. Den resulterende fejlmeddelelse henviser til en XML-fil og nævner ikke YAML, hvilket er vildledende.
Lave: Omorganiser mappen, så YAML-manifestfilerne er under de korrekte stier:
<rootFolder>/
solutions/<YourSolutionUniqueName>/ ← move solution.yml here
solution.yml
solutioncomponents.yml
rootcomponents.yml
missingdependencies.yml
publishers/<YourPublisherUniqueName>/
publisher.yml
Hvis du har hentet mappen fra en Git-integrations-bekræftelse eller pac solution clone, skal mappestrukturen allerede være korrekt. En mappe, der kun indeholder YAML-filer på øverste niveau uden solutions/ undermappen, repræsenterer en ufuldstændig udtrækning og kan ikke pakkes direkte.
Advarsel! Komponenten, der er erklæret i rootcomponents.yml, har ingen kildefiler
Denne advarsel vises, når en komponent, f.eks. en lærredsapp, er angivet i rootcomponents.yml , men der ikke findes tilsvarende kildefiler i den forventede komponentmappe (f.eks. canvasapps/<schema-name>/).
Effekt: Værktøjet lykkes stadig (afslutningskode 0) og opretter en gyldig .zip fil, men den angivne komponent udelades fra den pakkede løsning.
Forårsage: Mappen blev oprettet ved en delvis udtrækning, eller komponentens kildefiler blev ikke inkluderet i lageret. Det er f.eks. kun løsningsmanifestfilerne, der blev bekræftet, og ikke selve lærredsappen.
Lave: Kontrollér, at alle komponenter, der er erklæret i rootcomponents.yml , har tilsvarende kildefiler i mappen. Filen .msapp skal findes under canvasapps/<schema-name>/ for lærredsapps. Hvis der mangler filer, skal du eksportere hele løsningen fra Dataverse igen og pakke den ud igen eller bruge pac solution clone til at få et komplet uddrag.