Hulpprogramma SolutionPackager

SolutionPackager is een hulpprogramma waarmee een gecomprimeerd Microsoft Dataverse-oplossingsbestand omgekeerd kan worden uitgepakt in meerdere XML-bestanden en andere bestanden. U kunt deze bestanden vervolgens eenvoudig beheren door gebruik te maken van een bronbeheersysteem. De volgende secties laten zien hoe u dit hulpprogramma uitvoert en hoe u het hulpprogramma gebruikt met beheerde en onbeheerde oplossingen.

Waar het SolutionPackager-hulpprogramma te zoeken

Het SolutionPackager-hulpprogramma wordt gedistribueerd als onderdeel van het NuGet-pakket Microsoft.CrmSdk.CoreTools. Voer deze stappen uit om het programma te installeren.

  1. Download het NuGet-pakket.
  2. Verander de bestandsnaamextensie van het pakket van .nupkg naar .zip.
  3. Pak de inhoud van het gecomprimeerde (zip) bestand uit.

U vindt het uitvoerbare bestand SolutionPackager.exe in de map <uitgepakte-mapnaam>/contents/bin/coretools. Voer het programma uit vanuit de map coretools of voeg die map toe aan uw PATH.

Argumenten van de opdrachtregel SolutionPackager

SolutionPackager is een opdrachtregelprogramma dat met de parameters in de volgende tabel kan worden geïdentificeerd.

Argument Beschrijving
/action: {Extract|Pack} Vereist. De uit te voeren actie. De actie kan het uitpakken zijn van een oplossingbestand (zip) naar een map of het verpakken van een map in een zipbestand.
/zipfile: <file path> Vereist. Het pad en de naam van een oplossingsbestand (zip). Bij het uitpakken moet het bestand aanwezig en leesbaar zijn. Bij het inpakken wordt het bestand vervangen.
/folder: <folder path> Vereist. Het pad naar een map. Bij het uitpakken, wordt deze map gemaakt en ingevuld met onderdeelbestanden. Bij het inpakken, moet deze map al bestaan en eerder uitgepakte onderdeelbestanden bevatten.
/packagetype: {Unmanaged|Managed|Both} Optioneel. Het type in te pakken proces. De standaardwaarde is onbeheerd. Dit argument kan in de meeste situaties worden weggelaten omdat het verpakkingstype kan worden gelezen van binnen in het zipbestand of onderdeelbestanden. Bij het uitpakken en wanneer Both is opgegeven, moeten beheerde en onbeheerde oplossingsbestanden (zip) aanwezig zijn en worden verwerkt in één map. Wanneer bij het inpakken Both is opgegeven, worden beheerde en onbeheerde oplossingsbestanden (zip) geproduceerd vanuit één map. Voor meer informatie, zie de sectie over het werken met beheerde en onbeheerde oplossingen verderop in dit onderwerp.
/allowWrite:{Yes|No} Optioneel. De standaardwaarde is Ja. Dit argument wordt alleen gebruikt tijdens het uitpakken. Wanneer /allowWrite:No is opgegeven, voert het programma alle bewerkingen uit, maar kan het geen bestanden schrijven of verwijderen. De uitpakbewerking kan veilig worden gewoon geëvalueerd zonder bestaande bestanden te overschrijven of verwijderen.
/allowDelete:{Yes|No|Prompt} Optioneel. De standaardwaarde is Prompt. Dit argument wordt alleen gebruikt tijdens het uitpakken. Wanneer /allowDelete:Yes is opgegeven, worden alle bestanden in de map die door de parameter /folder is opgegeven en niet worden verwacht, automatisch verwijderd. Wanneer /allowDelete:No is opgegeven, wordt niets verwijderd. Wanneer /allowDelete:Prompt is opgegeven, wordt de gebruiker via de console gevraagd om alle verwijderbewerkingen toe te staan of te weigeren. Als /allowWrite:No is opgegeven, wordt er niets wordt verwijderd zelfs niet als /allowDelete:Yes ook is opgegeven.
/clobber Optioneel. Dit argument wordt alleen gebruikt tijdens het uitpakken. Wanneer /clobber is opgegeven, worden de bestanden met het kenmerk alleen-lezen overschreven of verwijderd. Indien niet opgegeven, worden de bestanden met het kenmerk alleen-lezen niet overschreven of verwijderd.
/errorlevel: {Off|Error|Warning|Info|Verbose} Optioneel. De standaardwaarde is Info. Dit argument aan hoeveel registratie-informatie moet worden uitgevoerd.
/map: <file path> Optioneel. Het pad en de naam van een XML-bestand met richtlijnen voor de bestandstoewijzing. Bij gebruik tijdens het uitpakken, worden bestanden die normaal worden gelezen vanuit de map die is opgegeven door de parameter /folder, gelezen vanaf alternatieve locaties, zoals opgegeven in het toewijzingsbestand. Tijdens een verpakkingsbewerking, worden bestanden die overeenstemmen met de richtlijnen, niet geschreven.
/nologo Optioneel. De banner tijdens runtime onderdrukken.
/log: <file path> Optioneel. Een pad en een naam naar een logboekbestand. Als het bestand al bestaat, wordt de nieuwe logboekinformatie toegevoegd aan het bestand.
@ <file path> Optioneel. Een pad en een naam voor een bestand dat opdrachtregelargumenten voor het hulpprogramma bevat.
/sourceLoc: <string> Optioneel. Dit argument genereert een sjabloonbronbestand en is alleen geldig bij het uitpakken.

De mogelijke waarden zijn auto of een LCID/ISO-code voor de taal die u wilt exporteren. Als dit argument dit wordt gebruikt, worden de tekenreeksresources van de opgegeven locatie uitgepakt als een neutraal .resx-bestand. Als auto of alleen de korte of de lange vorm van de schakelaar is opgegeven, worden de basislandinstelling of de oplossing gebruikt. U kunt de korte vorm gebruiken van de opdracht: /src.
/localize Optioneel. Alle tekenreeksresources in .resx-bestanden samenvoegen of uitpakken. U kunt de korte vorm gebruiken van de opdracht: /loc. De lokaliseeroptie ondersteunt gedeelde onderdelen voor .resx-bestanden. Meer informatie: RESX-webresources gebruiken

Gebruik het opdrachtargument /map

De volgende discussie bespreekt het gebruik van het argument /map naar het hulpprogramma SolutionPackager.

Bestanden die in een geautomatiseerd buildsysteem worden opgebouwd, zoals Silverlight-bestanden (.xap) en plug-inassemblies, worden meestal niet opgenomen in bronbeheer. Webresources kunnen al aanwezig zijn in bronbeheer op locaties die niet rechtstreeks compatibel zijn met het SolutionPackager-hulpprogramma,. Door de parameter /mao op te nemen, kan het SolutionPackager-hulpprogramma worden opgedragen om dergelijke bestanden te lezen en in te pakken vanaf andere locaties en niet vanuit de map Extract zoals gebruikelijk. De parameter /map moet de naam en het pad naar een XML-bestand met toewijzingsrichtlijnen specificeren. Deze richtlijnen instrueren de SolutionPackager om bestanden te matchen op naam en pad, en geven de alternatieve locatie aan om het overeenkomende bestand te vinden. De volgende informatie geldt evenveel voor alle richtlijnen.

  • Meerdere richtlijnen kunnen worden weergegeven, waaronder richtlijnen die identieke bestanden zoeken. De richtlijnen die vroeg in het bestand staan, krijgen de voorkeur ten opzichte van de richtlijnen die later worden weergegeven.

  • Als een bestand aan een richtlijn wordt gekoppeld, moet het op ten minste één andere locatie worden gevonden. Als er geen overeenkomende alternatieven worden gevonden, wordt er een fout weergegeven.

  • Map- en bestandspaden kunnen absoluut of relatief zijn. Relatieve paden worden altijd geëvalueerd vanuit de map die is opgegeven door de parameter /folder.

  • Omgevingvariabelen kunnen worden opgegeven met een %variable%-syntaxis.

  • Een mapjokerteken ** kan worden gebruikt om 'in elke submap' aan te geven. Het kan alleen als laatste deel van een pad worden gebruikt, bijvoorbeeld: c:\mapA\**.

  • De jokertekens voor een bestandsnaam mogen alleen worden gebruikt in de vormen “*.ext” of “*.*” Er wordt geen ander patroon ondersteund.

    De drie types richtlijnentoewijzingen worden hier beschreven, samen met een voorbeeld dat toont hoe u deze kunt gebruiken.

Maptoewijzing

De volgende informatie bevat gedetailleerde gegevens over maptoewijzing.

Xml-indeling

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

Beschrijving

Bestandspaden die overeenstemmen met 'mapA' worden omgezet naar 'mapB'.

  • De hiërarchie van submappen onder elk ervan moet precies overeenkomen.

  • Mapjokertekens worden niet ondersteund.

  • Er mogen geen bestandsnamen worden opgegeven.

    Voorbeelden

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

Bestand naar bestandtoewijzing

De volgende informatie toont meer details over de bestand-naar-bestandtoewijzing.

Xml-indeling

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

Beschrijving

Elk bestand dat overeenstemt met de parameter map wordt gelezen vanaf de naam en het pad in de opgegeven parameter to.

Voor de map parameter:

  • Er moet een bestandsnaam worden opgegeven. Het pad is optioneel. Als er geen pad is opgegeven, kunnen de bestanden van elke map worden afgestemd.

  • Bestandsnaamjokertekens worden niet ondersteund.

  • Het mapjokerteken wordt ondersteund.

    Voor de to parameter:

  • Er moet een bestandsnaam en pad worden opgegeven.

  • De bestandsnaam kan verschillen van de naam in de parameter map.

  • Bestandsnaamjokertekens worden niet ondersteund.

  • Het mapjokerteken wordt ondersteund.

Voorbeelden

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

Merk op dat in het bovenstaande voorbeeld van een NuGet-pakket cr886_PluginPackageTest.nupkg niet wordt overschreven als het bestand al bestaat op de opgegeven locatie.

Bestand naar padtoewijzing

De volgende tabel toont gedetailleerde informatie over de bestand-naar-padtoewijzing.

Xml-indeling

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

Beschrijving

Elk bestand dat overeenstemt met de parameter map wordt gelezen vanaf het pad in de opgegeven parameter to.

Voor de map parameter:

  • Er moet een bestandsnaam worden opgegeven. Het pad is optioneel. Als er geen pad is opgegeven, kunnen de bestanden van elke map worden afgestemd.

  • Bestandsnaamjokertekens worden ondersteund.

  • Het mapjokerteken wordt ondersteund.

Voor de to parameter:

  • Er moet een pad worden opgegeven.

  • Het mapjokerteken wordt ondersteund.

  • Er mag geen bestandsnaam worden opgegeven.

    Voorbeelden

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

Voorbeeld van toewijzing

Het volgende XML-codevoorbeeld toont een volledig toewijzingsbestand dat ervoor zorgt dat het SolutionPackager-hulpprogramma elke webresource en twee standaard gegenereerde assemblies kan lezen vanuit Developer Toolkit-projecten met de naam 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>  

Beheerde en onbeheerde oplossingen

Een gecomprimeerd (.zip) Dataverse-oplossingsbestand kan worden geëxporteerd in een of twee types, zoals hier getoond.

Beheerde oplossing
Een voltooide oplossing, klaar om in een organisatie te worden geïmporteerd. Na het importeren, kunnen er geen onderdelen worden toegevoegd of verwijderd, hoewel verdere aanpassing nog steeds is toegestaan. Dit is aanbevolen wanneer de ontwikkeling voor de oplossing is voltooid.

Onbeheerde oplossing
Een open oplossing zonder beperkingen over wat kan worden toegevoegd, verwijderd, of aangepast. Dit is aanbevolen tijdens de ontwikkeling van een oplossing.

De indeling van een gecomprimeerd oplossingbestand is verschillend volgens type, beheerd of onbeheerd. SolutionPackager kan gecomprimeerde oplossingsbestanden van elk type verwerken. Het hulpprogramma kan echter niet één type omzetten naar een ander. De enige manier om oplossingsbestanden om te zetten in een ander type, bijvoorbeeld van onbeheerd in beheerd, is door het onbeheerde oplossingsbestand (.zip) te importeren in een Dataverse-server en de oplossing vervolgens te exporteren als een beheerde oplossing.

SolutionPackager kan onbeheerde en beheerde oplossingsbestanden (.zip) verwerken als een gecombineerde set via de parameter /PackageType:Both. Om deze bewerking uit te voeren, is het noodzakelijk om uw oplossing twee keer te exporteren als elk type, waarbij de zipbestanden als volgt worden benoemd.

Onbeheerd zipbestand: ElkeNaam.zip Behjeerd zipbestande: ElkeNaam_managed.zip

Het hulpprogramma veronderstelt de aanwezigheid van het beheerde zipbestand in dezelfde map als het onbeheerde bestand en pakt beide bestanden uit in één map, waarbij de verschillen worden behouden tussen beheerde en onbeheerde onderdelen.

Nadat een oplossing is uitgepakt als beheerd en onbeheerd, is het mogelijk om vanuit die map beide in te pakken, of elk type afzonderlijk, met de parameter /PackageType om het type te selecteren dat u wilt maken. Bij het opgeven van beide bestanden, worden er twee zipbestanden gemaakt met de naamconventie zoals hierboven. Als de parameter /PackageType ontbreekt wanneer u inpakt vanuit een dubbele beheerde en onbeheerde map, wordt standaard één onbeheerd zipbestand gemaakt.

Problemen oplossen

Als u Visual Studio gebruikt om bronbestanden te bewerken die door de oplossingverpakker zijn gemaakt, kunt u als u opnieuw inpakt een bericht krijgen zoals het volgende: “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.” Dit gebeurt omdat Visual Studio de metagegevenslabels van het bronbestand vervangt door gegevenslabels.

Oplossing

  1. Open het bronbestand in uw favoriete tekstverwerker en zoek en bewerk de volgende labels:

    <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. Wijzig de knooppuntnaam van <data> naar <metadata>.

    Deze tekenreeks bijvoorbeeld:

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

    Wijzigt in:

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

    Hierdoor kan de oplossingverpakker het bronbestand lezen en importeren. Dit probleem werd alleen geobserveerd bij gebruik van de Visual Studio bronbewerker.

Zie ook

Bronbeheer gebruiken met oplossingsbestanden

Oplossingsconcepten