SolutionPackager-verktyget

SolutionPackager är ett verktyg som kan dela upp en komprimerad Microsoft Dataverse-lösningsfil i flera XML-filer och andra filer. Du kan då enkelt hantera dessa filer med hjälp av ett källkontrollsystem. I följande avsnitt lär du dig hur du kör verktyget och hur du använder verktyget med hanterade och icke-hanterade lösningar.

Här hittar du verktyget SolutionPackager

Verktyget SolutionPackager distribueras som en del av paketet Microsoft. CrmSdk. CoreToolsNuGet. Följ de här stegen för att installera appen.

  1. Ladda ned NuGet-paketet.
  2. Byt namn på filnamnstillägget för paketet från .nupkg till .zip.
  3. Extrahera innehållet i den komprimerade (zip) filen.

Du hittar den körbara SolutionPackager.exe i mappen <extracted-folder-name>/contents/bin/coretools. Kör programmet från mappen coretools eller lägg till mappen i PATH.

Kommandoradargument för SolutionPackager

SolutionPackager är ett kommandoradsverktyg som kan startas med de parametrar som anges i följande tabell.

Argument Description
/action: {Extract|Pack} Obligatoriskt. Den åtgärd som ska utföras. Åtgärden kan antingen extrahera en zip-fil för en lösning till en mapp eller för att packa en mapp i en zip-fil.
/zipfile: <file path> Obligatoriskt. Sökväg och namn för en lösnings-zip-fil. När filen extraheras måste den finnas och läsas från. Vid packning ersätts filen.
/folder: <folder path> Obligatoriskt. Sökvägen till en mapp. När den här mappen extraheras skapas och fylls mappen i med komponentfiler. Om du väljer att paketera måste mappen redan finnas och innehålla komponentfiler som redan har extraherats.
/packagetype: {Unmanaged|Managed|Both} Valfritt. Den pakettyp som ska bearbetas. Standardvärdet är Icke-hanterat. Detta argument kan utelämnas i de flesta fall eftersom pakettypen kan läsas från en zip-fil eller komponentfiler. När du extraherar och "Båda" anges måste hanterade och icke-hanterade lösnings-zip-filer finnas tillgängliga och bearbetas till en enda mapp. Vid packning när "Båda" anges skapas hanterade och icke-hanterade zip-filer från en mapp. Mer information finns i avsnittet om att arbeta med hanterade och icke-hanterade lösningar senare i detta ämne.
/allowWrite:{Yes|No} Valfritt. Standardvärdet är Ja. Detta argument används endast under extraktion. När "/allowWrite: Nej" anges utför verktyget alla åtgärder men inte skriva eller radera några filer. Extraheringsåtgärden kan utvärderas på ett säkert sätt utan att befintliga filer skrivs över eller tas bort.
/allowDelete:{Yes|No|Prompt} Valfritt. Standardvärdet är "Prompt". Detta argument används endast under extraktion. När "/allowDelete:Yes" anges tas alla filer som oväntat finns i mappen som anges i parametern "/folder" bort automatiskt. När /allowDelete:No anges görs inga borttagningar. När "/allowDelete:Prompt" anges uppmanas användare via konsolen att tillåta eller neka alla borttagningsåtgärder. Observera att om /allowWrite:No anges görs inga borttagningar även om /allowDelete:Yes också anges.
/clobber Valfritt. Detta argument används endast under extraktion. När "/clobber" anges skrivs filer som med skrivskyddat attribut över eller tas bort. Om alternativet inte har angetts kommer filer med skrivskyddat attribut inte att skrivas över eller tas bort.
/errorlevel: {Off|Error|Warning|Info|Verbose} Valfritt. Standardprefixet är "Info". Detta argument anger vilken loggningsinformation som ska matas ut.
/map: <file path> Valfritt. Sökvägen till och namnet på en xml-fil som innehåller filmappningsdirektiv. Vid användning i samband med extrahering läses filer som vanligtvis läses inifrån den mapp som anges i parametern /folder istället från alternativa platser enligt angivet i mappningsfilen. I samband med packningsåtgärder skrivs inga filer som matchar direktiven.
/nologo Valfritt. Undertryck banderollen vid körning.
/log: <file path> Valfritt. En sökväg och ett namn till en loggfil. Om filen redan finns läggs den nya loggningsinformationen till i filen.
@ <file path> Valfritt. En sökväg och ett namn till en fil som innehåller kommandoradsargument för verktyget.
/sourceLoc: <string> Valfritt. Detta argument genererar en mallresursfil och är endast giltig vid extrahering.

Möjliga värden är auto eller en LCID/ISO-kod för det språk du vill exportera. När det här argumentet används extraheras strängresurserna från de nationella inställningarna som en neutral RESX-fil. Om auto eller bara den långa eller korta formen av växeln anges, används basspråket eller lösningen. Kommandot kan användas i kortform: /src.
/localize Valfritt. Extrahera eller slå samman alla strängresurser till RESX-filer. Kommandot kan användas i kortform: /loc. Lokaliseringsalternativet stöder delade komponenter för .resx-filer. Mer information: Använda RESX-webbresurser

Använda kommandoargumentet /map

I följande diskussion beskrivs hur du använder argumentet /map med verktyget SolutionPackager.

Filer som är inbyggda i ett automatiserat versionssystem, t. ex. xap Silverlight-filer och plugin-programpaket, kontrolleras som regel inte i källkontrollen. Webbresurser kanske redan finns i källkontrollen på platser som inte är direkt kompatibla med verktyget SolutionPackager. Om du inkluderar parametern /map kan verktyget SolutionPackager användas för att läsa och paketera sådana filer från alternativa platser och inte som vanligt från insidan av extraheringsmappen. I parametern /map måste namnet och sökvägen till en XML-fil med mappning anges. De uppger att SolutionPackager ska matcha filernas namn och sökväg och ange en alternativ plats för att hitta den matchande filen. Följande information gäller lika för alla direktiv.

  • Flera direktiv kan visas, inklusive de direktiv som överensstämmer med identiska filer. Direktiv som visas tidigt i filen har högre prioritet än de direktiv som visas i listan senare.

  • Om en fil matchas mot ett annat direktiv måste den finnas på minst en alternativ plats. Om det inte finns några matchande alternativ kommer SolutionPackager att utfärda ett fel.

  • Mapp- och filsökvägar kan vara absoluta eller relativa. Relativa sökvägar utvärderas alltid från den mapp som anges med parametern /folder.

  • Miljövariabler kan anges med syntaxen %variable%.

  • En mapp med jokertecken “**” kan användas för att innebära "i valfri undermapp". Det kan endast användas som sista del av en sökväg, till exempel: “c:\folderA\**”.

  • Jokertecken i filnamn kan endast användas i formulären "*.ext" eller "*.*". Inget annat mönster stöds.

    De tre typerna av direktivmappningar beskrivs här tillsammans med ett exempel som visar hur du använder dem.

Mapp-mappning

Nedan finns detaljerad information om mapp-mappning.

Xml-format

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

Description

Filsökvägar som matchar "folderA" kommer att bytas till "folderB".

  • Mapphierarkin för undermappar måste matcha exakt.

  • Jokertecken för mappar stöds inte.

  • Inga filnamn kan anges.

    Exempel

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

Mappning fil till fil

Nedan finns detaljerad information om mappning fil till fil.

Xml-format

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

Description

Alla filer som matchar map-parametern kommer att läsas från namnet och sökvägen som anges i to-parametern.

För map-parametern:

  • Ett filnamn måste anges. Sökvägen är valfri. Om ingen sökväg anges kan filer från alla mappar matchas.

  • Jokertecken för filnamn stöds inte.

  • Jokertecknet för mappen stöds.

    För to-parametern:

  • Ett filnamn och en sökväg måste anges.

  • Filnamnet kan skilja sig från namnet i map-parametern.

  • Jokertecken för filnamn stöds inte.

  • Jokertecknet för mappen stöds.

Exempel

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

Observera att i exemplet ovan NuGet paketexempel, cr886_PluginPackageTest.nupkg skrivs inte över om filen redan finns på den angivna platsen.

Mappning fil till sökväg

Nedan finns detaljerad information om mappning fil till sökväg.

Xml-format

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

Beskrivning

Alla filer som matchar map-parametern kommer att läsas från sökvägen som anges i to-parametern.

För map-parametern:

  • Ett filnamn måste anges. Sökvägen är valfri. Om ingen sökväg anges kan filer från alla mappar matchas.

  • Jokertecken för filnamn stöds.

  • Jokertecknet för mappen stöds.

För to-parametern:

  • Ett söknamn måste anges.

  • Jokertecknet för mappen stöds.

  • Ett filnamn ska inte anges.

    Exempel

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

Mappningsexempel

Följande XML-kodexempel visar en fullständig mappningsfil som gör att SolutionPackager-verktyget kan läsa alla webbresurser och de två standardgenererade sammansättningarna från ett Developer Toolkit-projekt kallat 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>  

Hanterade och icke-hanterade lösningar

Du kan exportera en Dataverse komprimerad lösningsfil (zip) i en av de två typer som visas här.

Hanterad lösning
En slutförd lösning som kan importeras till en organisation. När du har importerat komponenter kan dessa inte läggas till eller tas bort, dock kan de vid behov möjliggöra ytterligare anpassning. Detta rekommenderas när utvecklingen av lösningen har slutförts.

Icke-hanterad lösning
En öppen lösning utan begränsningar för vad som kan läggas till, tas bort eller ändras. Detta rekommenderas i samband med utveckling av en lösning.

Formatet för en komprimerad lösningsfil varierar beroende på typ, antingen hanterad eller icke-hanterad. Med SolutionPackager kan du bearbeta komprimerade lösningsfiler av bägge typer. Verktyget kan emellertid inte konvertera en typ till en annan. Det enda sättet att konvertera lösningsfiler till en annan typ, t.ex. från icke-hanterad till hanterad, är att importera den icke-hanterade lösningsfilen i zip-format till en Dataverse-server och sedan exportera lösningen som en hanterad lösning.

SolutionPackager kan bearbeta icke-hanterade och hanterade lösningsfiler i zip-format som en sammanlagd uppsättning via parametern "/PackageType:Both". Om du vill utföra den här åtgärden måste du exportera lösningen två gånger för respektive typ och namnge zip-filerna enligt följande:

Icke-hanterad zip-fil: AnyName.zip Hanterad zip-fil: AnyName_managed.zip

Verktyget förutsätter förekomst av den hanterade zip-filen i samma mapp som den icke-hanterade filen och extraherar båda filer till en enda mapp som bevarar skillnaderna där såväl hanterade som icke-hanterade komponenter förekommer.

När en lösning har extraherats både som icke-hanterad och hanterad är det möjligt att från denna enda mapp paketera båda typer (eller respektive typ individuellt) med hjälp av parametern/PackageType i syfte att ange vilken typ som ska skapas. När båda filer anges kommer två zip-filer att produceras enligt namngivningskonventionen ovan. Om parametern /PackageType saknas när du packar från en dubbel hanterad och icke-hanterad mapp är standardvärdet att skapa en enkel, icke-hanterad zip-fil.

Felsökning

Om du använder Visual Studio för att redigera resursfiler som skapats med lösningspaketeraren kan du komma att få ett meddelande när du paketerar liknande detta: “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.” Detta händer eftersom Visual Studio ersätter resursfilens metadata-taggar med datataggar.

Lösning

  1. Öppna resursfilen i din favorittextredigerare och sök efter samt uppdatera följande taggar:

    <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. Ändra nodnamnet från <data> till <metadata>.

    Till exempel följande sträng:

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

    Ändras till:

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

    Detta gör att lösningspaketeraren kan läsa och importera resursfilen. Detta problem har endast observerats vid användning av Visual Studio resursredigeraren.

Se även

Använda källkontroll med lösningsfiler

Lösningsbegrepp