Løsningspakkeværktøj

SolutionPackager er et værktøj, der kan dekryptere en komprimeret Microsoft Dataverse-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.

Hvor du kan finde værktøjet SolutionPackager

SolutionPackager-værktøjet distribueres som en del af Microsoft.CrmSdk.CoreToolsNuGet-pakken. 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).

Du kan finde den eksekverbare SolutionPackager.exe-fil i mappen <navn-på-udpakket-mappe>/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: {Extract|Pack} 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: <file path> 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.
/folder: <folder path> 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: {Unmanaged|Managed|Both} 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 dette emne.
/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, briver 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 den ikke er angivet, bliver filer med skrivebeskyttet attribut ikke overskrevet eller slettet.
/errorlevel: {Off|Error|Warning|Info|Verbose} Valgfrit. Standardværdien er Oplysninger. Dette argument angiver niveauet af logføringsoplysninger til output.
/map: <file path> 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. Filer, der opfylder direktiverne, bliver ikke skrevet under en pakkehandling.
/nologo Valgfrit. Undertryk banner på kørselstidspunktet.
/log: <file path> Valgfrit. En sti og et navn til en logfil. Hvis filen allerede findes, føjes der nye oplysninger om logføring til filen.
@ <file path> Valgfrit. En sti og et navn til en fil, der indeholder kommandolinjeargumenter til værktøjet.
/sourceLoc: <string> 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

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 mappejokertegn “**” kan bruges til at betyde "i enhver undermappe". Det kan kun bruges som den sidste del af en sti, for eksempel: “c:\folderA\**”.

  • Filnavnes jokertegn kan kun anvendes i formaterne “*.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" /> 

Bemærk, at i eksemplet med ovenstående NuGet-pakke overskriver ikke cr886_PluginPackageTest.nupkg, 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 sub-folders -->  
       <FileToPath map="WebResources\*.*" to="..\..\CrmPackage\WebResources\**" />  
       <FileToPath map="WebResources\**\*.*" to="..\..\CrmPackage\WebResources\**" />  
</Mapping>  

Administrerede og ikke-administrerede løsninger

En komprimeret Dataverse-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 den er importeret, kan komponenter tilføjes eller fjernes, selvom de kan vælge at 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 metode til at konvertere løsningsfiler til en anden type, for eksempel fra ikke-administreret til administreret, er ved at importere den ikke-administrerede .zip-løsningsfil 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

Hvis du bruger Visual Studio til at redigere de ressourcefiler, der er oprettet af SolutionPackager, modtager du måske en meddelelse, når du ompakker til denne: “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 mærker for Visual Studio-ressourcefilens metadata erstattes 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. Problemet er kun blevet observeret ved brug af Visual Studio-ressourceeditoren.

Se også

Bruge kildestyring med løsningsfiler

Løsningskoncepter