Jaa


SolutionPackager-työkalu

SolutionPackager on työkalu, joka voi purkaa pakatun Microsoft Dataverse -ratkaisutiedoston useisiin XML-tiedostoihin ja muihin tiedostoihin. Tämän jälkeen näitä tiedostoja on helppo hallita lähdehallintajärjestelmän avulla. Seuraavissa osissa näytetään, miten työkalu suoritetaan ja miten työkalua käytetään hallittujen ja hallitsemattomien ratkaisujen kanssa.

Tietoja SolutionPackager-työkalun löytämiseen

SolutionPackager toimitetaan osana Microsoft.CrmSdk.CoreTools NuGet -pakettia. Voit asentaa ohjelman alla mainittujen vaiheiden avulla.

  1. Lataa NuGet-paketti.
  2. Anna paketin tiedostonimen tunnisteelle .nupkg uusi tunniste .zip.
  3. Pura pakatun (zip) tiedoston sisältö.

SolutionPackager.exe-suoritustiedosto on kansiossa <extracted-folder-name>/contents/bin/coretools. Suorita ohjelma coretools-kansiosta tai lisää se PATH-kansioon.

SolutionPackagerin komentoriviargumentit

SolutionPackager on komentorivityökalu, joka voidaan käynnistää seuraavassa taulukossa esitetyillä parametreilla.

Argumentti Description
/action: {Extract|Pack} Pakollinen. Suoritettava toiminto. Toiminto voi joko purkaa ratkaisun .zip-tiedoston kansioon tai pakata kansion .zip-tiedostoksi.
/zipfile: <tiedostopolku> Pakollinen. Ratkaisun .zip-tiedoston polku ja nimi. Purettaessa tiedoston on oltava olemassa ja luettavissa. Pakattaessa tiedosto korvataan.
/folder: <kansion polku> Pakollinen. Kansion polku. Purettaessa tämä kansio luodaan ja täytetään komponenttitiedostoilla. Pakattaessa tämän kansion on oltava jo olemassa ja sisällettävä aiemmin purettuja komponenttitiedostoja.
/packagetype: {Unmanaged|Managed|Both} Valinnainen. Käsiteltävän paketin tyyppi. Oletusarvona on Hallitsematon. Tämä argumentti voidaan jättää pois useimmissa tapauksissa, koska pakettityyppi voidaan lukea .zip-tiedostosta tai komponenttitiedostoista. Kun purettaessa on määritetty Molemmat, hallitun ja hallitsemattoman ratkaisun .zip-tiedostojen on oltava käytettävissä, ja ne käsitellään yhdessä kansiossa. Kun purettaessa on määritetty Molemmat, hallitun ja hallitsemattoman ratkaisun .zip-tiedostot luodaan yhdestä kansiosta. Lisätietoja on myöhemmin tässä aiheessa hallittujen ja hallitsemattomien ratkaisujen käyttöä koskevassa osassa.
/allowWrite:{Yes|No} Valinnainen. Oletusarvo on Kyllä. Tätä argumenttia käytetään vain purkamisen aikana. Kun määrityksenä on /allowWrite:No, työkalu suorittaa kaikki toiminnot, mutta se ei voi kirjoittaa tai poistaa tiedostoja. Purkutoimintoa voidaan arvioida turvallisesti korvaamatta tai poistamatta mitään olemassa olevia tiedostoja.
/allowDelete:{Yes|No|Prompt} Valinnainen. Oletusarvona on Prompt. Tätä argumenttia käytetään vain purkamisen aikana. Kun määrityksenä on /allowDelete:Yes, kaikki parametrissa /folder määritetyssä kansiossa olevat odottamattomat tiedostot poistetaan automaattisesti. Kun määrityksenä on /allowDelete:No, mitään ei poisteta. Kun määrityksenä on /allowDelete:Prompt, konsoli pyytää käyttäjää hyväksymään tai hylkäämään jokaisen poistotoiminnon. Jos määrityksenä on /allowWrite:No, poistamista ei tapahdu, vaikka määrityksenä olisi myös /allowDelete:Yes.
/clobber Valinnainen. Tätä argumenttia käytetään vain purkamisen aikana. Kun /clobber on määritetty, tiedostot, joilla on vain luku -määritejoukko, korvataan tai poistetaan. Kun sitä ei ole määritetty, tiedostoja, joilla on vain luku -määritejoukko, ei korvata tai poisteta.
/errorlevel: {Off|Error|Warning|Info|Verbose} Valinnainen. Oletusarvona on Info. Tämä argumentti ilmaisee tulosteena olevien kirjaustietojen tason.
/map: <tiedostopolku> Valinnainen. Polku ja yhdistämismäärityksen direktiivit sisältävän .xml-tiedoston nimi. Käytettäessä tiedostoja purkamisen yhteydessä, yleensä /folder-parametrin mukaisesta kansiosta luettavat tiedostot luetaan yhdistämismäärityksen tiedoston mukaisista vaihtoehtoisista sijainneista. Pakkaustoiminnon aikana ei kirjoiteta direktiiviä vastaavia tiedostoja.
/nologo Valinnainen. Piilota palkki suorituksen aikana.
/log: <tiedostopolku> Valinnainen. Lokitiedoston polku ja nimi. Jos tiedosto on jo olemassa, uudet lokitiedot liitetään tiedostoon.
@ <tiedostopolku> Valinnainen. Sen tiedoston polku ja nimi, joka sisältää työkalun komentoriviargumentteja.
/sourceLoc: <merkkijono> Valinnainen. Tämä argumentti luo malliresurssitiedoston ja on kelvollinen vain purkamisen yhteydessä.

Mahdolliset arvot ovat auto tai LCID-/ISO-koodi kielelle, jonka haluat viedä. Kun tätä argumenttia käytetään, määritetyn kielialueen merkkijonoresurssit puretaan neutraalina .resx-tiedostona. Jos määritettynä on auto tai vain kytkimen pitkä tai lyhyt muoto on määritetty, käytetään peruskielialuetta tai ratkaisua. Voit käyttää komennon lyhyttä muotoa: /src.
/localize Valinnainen. Pura tai yhdistä kaikki merkkijonoresurssit .resx-tiedostoihin. Voit käyttää komennon lyhyttä muotoa: /loc. Lokalisointivaihtoehto tukee .resx-tiedostojen jaettuja komponentteja. Lisätietoja: RESX-verkkoresurssin käyttäminen

Käytä komentoargumenttia /map

Seuraavassa keskustelussa on tietoja /map-argumentin käyttämisestä SolutionPackager-työkalussa.

Automatisoidussa koontijärjestelmässä koottuja tiedostoja, kuten Silverlightin .xap-tiedostoja ja laajennuskokoonpaja, ei yleensä kuitata lähdevalvonnassa. Lähteenvalvonnassa voi olla jo verkkoresursseja sellaisissa paikoissa, jotka eivät ole suoraan yhteensopivia SolutionPackager-työkalun kanssa. Sisällyttämällä /map-parametrin SolutionPackager-työkalu voidaan ohjata lukemaan ja pakkaamaan tällaisia tiedostoja vaihtoehtoisista sijainneista eikä purkukansiosta, kuten yleensä. Yhdistämismäärityksen direktiivit sisältävän XML-tiedoston nimi ja polku on määritettävä /map-parametrissa. Nämä direktiivit ohjaavat SolutionPackager-työkalun yhdistämään tiedostot nimen ja polun mukaan ja osoittamaan vaihtoehtoisen sijainnin yhdistetyn tiedoston löytämiseksi. Seuraavat tiedot koskevat kaikkia direktiivejä tasavertaisesti.

  • Luettelossa voi olla useita direktiivejä, mukaan lukien ne, jotka yhdistävät identtisiä tiedostoja. Tiedoston alussa luetellut direktiivit ovat ensisijaisia myöhemmin lueteltuihin direktiiveihin nähden.

  • Jos tiedosto vastaa jotakin direktiiviä, sen on löydyttävä vähintään yhdestä vaihtoehtoisesta sijainnista. Jos vastaavia vaihtoehtoja ei löydy, SolutionPackager antaa virheen.

  • Kansio ja tiedostopolut voivat olla absoluuttisia tai suhteellisia. Suhteelliset polut arvioidaan aina /folder-parametrin määrittämästä kansiosta käsin.

  • Ympäristömuuttujat voidaan määrittää %variable%-syntaksin avulla.

  • Kansion yleismerkkiä ”**” voidaan käyttää tarkoittamaan ”missä tahansa alikansiossa”. Sitä voidaan käyttää vain polun viimeisenä osana, esimerkiksi: ”c:\folderA\**”.

  • Tiedosto nimien yleismerkkejä saa käyttää vain lomakkeissa “*.ext” tai “*.*”. Muita malleja ei tueta.

    Tässä on kuvattu kolmentyyppisiä direktiivien yhdistämismäärityksiä sekä esimerkki, jossa kerrotaan, miten niitä käytetään.

Kansioiden yhdistämismääritys

Alla on yksityiskohtaisia tietoja kansioiden yhdistämismäärityksestä.

Xml-muoto

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

Kuvaus

Tiedostopolut, jotka vastaavat folderA-kansiota, siirretään vastaamaan kansiota folderB.

  • Näiden alikansioiden hierarkioiden on oltava identtiset.

  • Kansion yleismerkkejä ei tueta.

  • Tiedostonimiä ei voi määrittää.

    Esimerkit

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

Tiedostojen välinen yhdistämismääritys

Seuraavassa annetaan yksityiskohtaisia tietoja tiedostojen välisestä yhdistämismäärityksestä.

Xml-muoto

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

Kuvaus

Kaikki map-parametria vastaavat tiedostot luetaan to-parametrissa määritetystä nimestä ja polusta.

map-parametrin osalta:

  • Tiedoston nimi on määritettävä. Polku on valinnainen. Jos polkua ei määritetä, voidaan yhdistää missä tahansa kansiossa olevia tiedostoja.

  • Tiedostonimen yleismerkkejä ei tueta.

  • Kansion yleismerkkiä tuetaan.

    to-parametrin osalta:

  • Tiedoston nimi ja polku on määritettävä.

  • Tiedoston nimi voi poiketa map-parametrissa olevasta nimestä.

  • Tiedostonimen yleismerkkejä ei tueta.

  • Kansion yleismerkkiä tuetaan.

Esimerkit

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

On huomattava, että edellä olevassa NuGet-pakettiesimerkissä cr886_PluginPackageTest.nupkg ei korvaudu, jos tiedosto on jo määritetyssä sijainnissa.

Tiedoston ja polun yhdistämismääritys

Seuraavassa annetaan yksityiskohtaisia tietoja tiedoston ja polun yhdistämismäärityksestä.

Xml-muoto

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

Kuvaus

Kaikki map-parametria vastaavat tiedostot luetaan to-parametrissa määritetystä polusta.

map-parametrin osalta:

  • Tiedoston nimi on määritettävä. Polku on valinnainen. Jos polkua ei määritetä, voidaan yhdistää missä tahansa kansiossa olevia tiedostoja.

  • Tiedostonimen yleismerkkejä tuetaan.

  • Kansion yleismerkkiä tuetaan.

to-parametrin osalta:

  • Polku on määritettävä.

  • Kansion yleismerkkiä tuetaan.

  • Tiedoston nimeä ei ole pakko määrittää.

    Esimerkit

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

Esimerkki yhdistelmämäärityksestä

Seuraava XML-koodinäyte näyttää täydellisen yhdistämiskartoituksen tiedoston, jonka avulla SolutionPackager-työkalu voi lukea mitä tahansa verkkoresursseja sekä kaksi oletusarvoisesti luotua kokoonpanoa CRMDevTookitSample-nimisestä Developer Toolkit -projektista.

<?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>  

Hallitut ja ei-hallitut ratkaisut

Dataversen pakattu ratkaisutiedosto (.zip) voidaan viedä yhdessä kahdesta tyypistä, kuten tässä näkyy.

Hallittu ratkaisu
Valmis ratkaisu, joka voidaan tuoda organisaatioon. Tuonnin jälkeen komponentteja ei voi lisätä tai poistaa, mutta niitä voi halutessaan mukauttaa lisää. Tätä suositellaan, kun ratkaisun kehitys on valmis.

Hallitsematon ratkaisu
Avoin ratkaisu, jossa ei ole rajoituksia sille, mitä voidaan lisätä, poistaa tai muokata. Tätä suositellaan ratkaisun kehittämisen aikana.

Pakatun ratkaisutiedoston muoto on erilainen sen tyypin perusteella eli joko hallittu tai hallitsematon. SolutionPackager voi käsitellä molempia ratkaisutiedostojen muotoja. Työkalu ei kuitenkaan voi muuntaa yhtä tyyppiä toiseksi. Ainoa tapa muuntaa ratkaisutiedostot eri tyypiksi, kuten hallitsemattomasta hallittuun, on tuoda hallitsemattoman ratkaisun. zip-tiedosto Dataverse -palvelimelle ja sitten viedä ratkaisu hallittuna ratkaisuna.

SolutionPackager voi käsitellä hallitsemattomien ja hallittujen ratkaisujen .zip-tiedostoja yhdistettynä joukkona parametrin /PackageType:Both kautta. Jotta tämä toiminto voidaan suorittaa, ratkaisu on vietävä kahteen kertaan kumpanakin tyyppinä ja .zip-tiedostot on nimettävä seuraavasti.

Hallitsematon .zip-tiedosto: JokuNimi.zip Hallittu .zip-tiedosto: JokuNimi_hallittu.zip

Työkalu olettaa, että hallittu zip-tiedosto on samassa kansiossa kuin hallitsematon tiedosto, ja purkaa molemmat tiedostot yhteen kansioon säilyttäen erot sen välillä, missä on hallittuja ja hallitsemattomia komponentteja.

Kun ratkaisu on purettu sekä hallitsemattomana että hallittuna, kyseisestä yksittäisestä kansiosta voi pakata molemmat tyypit tai kummankin tyypin yksittäin käyttäen /PackageType-parametria sen määrittämiseen, mikä tyyppi luodaan. Kun molemmat tiedostot määritetään, kaksi .zip-tiedostoa tuotetaan käyttämällä edellä esitettyä nimeämiskäytäntöä. Jos /PackageType-parametri puuttuu, kun pakkaus suoritetaan kansiosta, jossa on sekä hallittua että hallitsematonta sisältöä, tuotetaan oletusarvoisesti yksittäinen hallitsematon .zip-tiedosto.

Vianmääritys

Jos käytät Visual Studiota Solution Packagerin luomien resurssitiedostojen muokkaamiseen, saatat saada uudelleen pakkaamisen yhteydessä seuraavan kaltaisen sanoman“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.” Tämä tapahtuu, koska Visual Studio korvaa resurssitiedoston metatietotunnisteet tietotunnisteilla.

Ratkaisutapa

  1. Avaa resurssitiedosto haluamassasi tekstinkäsittelyohjelmassa ja paikallista ja päivitä seuraavat tunnisteet:

    <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. Vaihda solmun nimi muodosta <data> muotoon <metadata>.

    Esimerkiksi tämä merkkijono:

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

    Muuttuu muotoon:

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

    Tämän ansiosta Solution Packager voi lukea ja tuoda resurssitiedoston. Tätä ongelmaa on havaittu vain käytettäessä Visual Studion resurssieditoria.

Katso myös

Lähteenhallinnan käyttö ratkaisutiedostojen kanssa

Ratkaisukäsitteet