Del via


SolutionPackager-værktøj

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. De følgende afsnit viser dig, hvordan du kører værktøjet, og hvordan du bruger værktøjet med administrerede og ikke-administrerede løsninger.

Vigtigt!

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 du kan finde værktøjet SolutionPackager

SolutionPackager-værktøjet distribueres som en del af Microsoft. CrmSdk.CoreTools NuGet-pakke. Følg denne fremgangsmåde for at installere programmet.

  1. Download NuGet-pakken.
  2. Omdøb filtypenavnet for pakken fra .nupkg til .zip.
  3. 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 startes med de parametre, der er beskrevet i følgende tabel.

Argument Beskrivelse
/action: {Uddrag|Pakke} Krævet. Handlingen, der skal udføres. Handlingen kan være enten at udtrække en .zip-løsningsfil til en mappe eller pakke en mappe i en .zip-fil.
/zipfile: <filsti> Krævet. Stien til og navnet på en .zip-løsningsfil. Ved udpakning skal filen findes, og den skal kunne læses. Ved pakning erstattes filen.
/mappe: <mappevej> Krævet. Stien til en mappe. Ved udpakning oprettes denne mappe og udfyldes med komponentfiler. Ved pakning skal denne mappe allerede findes og indeholde tidligere udpakkede komponentfiler.
/packagetype: {Ikke administreret|Administreret|Begge dele} Valgfrit. Typen af pakke, der skal behandles. Standardværdien er Unmanaged (Ikke administreret). Argumentet kan udelades i de fleste tilfælde, fordi pakketypen kan læses inde fra .zip-filen eller komponentfilerne. Når udpakning og Både er angivet, skal administrerede og ikke-administrerede .zip-løsningsfiler findes 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:{Yes|No} 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. Udtrækningshandlingen kan vurderes sikkert uden at overskrive eller slette nogen eksisterende filer.
/allowDelete:{Yes|No|Prompt} Valgfrit. Standardværdien er Prompt. 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 bedt om via konsollen at tillade eller nægte alle slettehandlinger. 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 Oplysninger. Dette argument angiver niveauet af logføringsoplysninger til output.
/map: <filsti> Valgfrit. Stien til og navnet på en .xml-fil, der indeholder filetilknytningsdirektiver. Når det bruges under en udtrækning, bliver filer typisk læst inde i mappen, der er angivet af parameteren /folder, fra alternative placeringer, som er angivet i tilknytningsfilen. Under en pakkehandling skrives filer, der svarer til direktiverne, ikke.
/nologo Valgfrit. Undertryk banner på kørselstidspunktet.
/log: <filsti> Valgfrit. En sti og et navn til en logfil. Hvis filen allerede findes, føjes der nye oplysninger om logføring til filen.
@ <filsti> Valgfrit. En sti og et navn til en fil, der indeholder kommandolinjeargumenter til værktøjet.
/sourceLoc: <streng> Valgfrit. Dette argument genererer en skabelonressourcefil og er kun gyldig ved udtrækning.

Mulige værdier er auto eller en LCID/ISO-kode for det sprog, du vil eksportere. Når du bruger dette argument, udtrækkes strengressourcer fra den angivne landestandard som en neutral .resx-fil. Hvis auto eller blot den lange eller korte form af parameteren er angivet, bruges den grundlæggende landestandard eller løsningen. Du kan bruge den korte form af kommandoen: /src.
/localize Valgfrit. Udtræk 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 .msapp og 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]/

Vigtigt!

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 oplysninger vedrører brug af argumentet /map til SolutionPackager-værktøjet.

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 medtage parameteren /map kan SolutionPackager-værktøjet dirigeres til at læse og pakke disse filer fra alternative placeringer og ikke fra mappen Udpak, som det typisk vil udfø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 ligeligt.

  • 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 til ethvert direktiv, skal den findes i 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 er altid fortolket ud fra den mappe, der er angivet af parameteren /folder.

  • Miljøvariabler kan angives ved hjælp af en syntaks for %variable%.

  • 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 "*.*". Ingen andre mønstre understøttes.

    De tre typer direktivtilknytninger er beskrevet her, sammen med et eksempel, der viser, hvordan de bruges.

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.

  • Ingen filnavne kan angives.

    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.

For map-parameteren:

  • Der skal angives et filnavn. Stien er valgfri. Hvis ingen sti er angivet, kan filer fra enhver mappe matches.

  • Jokertegn understøttes ikke i filnavne.

  • Mappejokertegn understøttes.

    For to-parameteren:

  • Der skal angives et filnavn og en sti.

  • Filnavnet kan være et andet end navnet i map-parameteren.

  • 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.

Fil til sti-tilknytning

Følgende indeholder detaljerede oplysninger om fil til sti-tilknytning.

XML-format

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

Beskrivelse

Enhver fil, der svarer til map-parameteren, læses fra navnet og stien, der er angivet i to-parameteren.

For map-parameteren:

  • Der skal angives et filnavn. Stien er valgfri. Hvis ingen sti er angivet, kan filer fra enhver mappe matches.

  • Jokertegn understøttes i filnavne.

  • Mappejokertegn understøttes.

For to-parameteren:

  • 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å tilknytning

Følgende XML-kodeeksempel viser en komplet tilknytningsfil, som gør det muligt for SolutionPackager-værktøjet at læse enhver webressource og de to standardgenererede assemblier 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 fuldført.

Ikke-administreret løsning
En åben løsning uden begrænsninger for, hvad der kan tilføjes, fjernes eller ændres. Dette anbefales under udviklingen af en løsning.

Formatet af en komprimeret løsningsfil vil variere alt efter dens type, enten administreret eller ikke-administreret. SolutionPackager kan behandle komprimerede løsningsfiler af en af typerne. 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 .zip-løsningsfiler som et samlet sæt via parameteren /PackageType:Begge. Hvis du vil udføre denne handling, er det nødvendigt at eksportere din løsning to gange som hver type ved at navngive .zip-filerne på følgende måde.

Ikke-administreret .zip-fil: AnyName.zip

Administreret .zip-fil: AnyName_managed.zip

Værktøjet antager, at den administrerede .zip-fil findes i samme mappe som den ikke-administrerede fil og udtrækker begge filer til en enkelt mappe og bevarer forskellene, hvor både administrerede og ikke-administrerede komponenter findes.

Når en løsning er blevet pakket ud som både ikke-administreret og administreret, er det muligt fra den ene mappe at pakke dem begge eller hver for sig ved hjælp af parameteren /PackageType for 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 der pakkes fra en mappe med både administrerede og ikke-administrerede filer, er standarden at producere 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

  1. Åbn ressourcefilen i din foretrukne teksteditor, og find og opdater følgende koder:

    <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. Ret navnet på noden fra <data> til <metadata>.

    For eksempel denne streng:

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

    Skifter til:

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

    På denne måde kan Solution Packager læse og importere ressourcefilen. Dette problem er kun blevet observeret, når du bruger 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.

Se også