Делите путем


Алатка за прављење пакета решења

СолутионПацкагер је алатка која може стораторски разградити компримовану Microsoft Dataverse датотеку решења у више XМЛ датотека и других датотека. Затим можете лако да управљате овим датотекама помоћу система за контролу извора. Следећи одељци приказују вам како да покренете алатку и како да користите алатку са комплетним и некомплетним решењима.

Важно

Алат СолутионПацкагер више није препоручљив начин распакивања и паковања решења. Могућности алатке СолутионПацкагер су уграђене у Power Platform ЦЛИ. Команда pac solution има низ глагола unpack укључујући, pack, clone, sync и који укључују исте основне могућности алатке СолутионПацкагер.

Где можете пронаћи алатку SolutionPackager

Алатка SolutionPackager се дистрибуира као део Microsoft.CrmSdk.CoreTools NuGet пакета. Да бисте инсталирали програм, следите ове кораке.

  1. Преузми пакет NuGet .
  2. Преименујте ознаку типа датотеке пакета из .нупкг у .зип.
  3. Издвојите садржај компримоване (зип) датотеке.

Пронађите СолутионПацкагер.еxе у фасцикли < издвојено-фасцикла-име >/садржај/регал/цоретоолс. Покрените програм из фасцикле "Цоретоолс" или додајте ту фасциклу на путању.

Аргументи командне линије алатке SolutionPackager

SolutionPackager је алатка командне линије који се може позивати са параметрима наведеним у следећој табели.

Аргумент Опис
/action: {Extract|Pack} Обавезно. Радња коју треба обавити. Радња може бити било да распакујете .zip датотеку у фасциклу или да спакујете фасциклу у .zip датотеку.
/zipfile: <путања до датотеке> Обавезно. Путања и назив .zip датотеке решења. Приликом издвајања датотека мора постојати и бити читљива. Приликом паковања, датотека се замењује.
/folder: <путања до фасцикле> Обавезно. Путања до фасцикле. Приликом распакивања, ова фасцикла се креира и попуњава датотекама компоненти. Приликом паковања, ова фасцикла већ мора да постоји и садржи претходно распаковане датотеке компоненти.
/packagetype: {Unmanaged|Managed|Both} Опционално. Тип пакета који се обрађује. Подразумевана вредност је „Unmanaged“. Овај аргумент може бити изостављен у већини случајева јер се тип пакета може прочитати из .zip датотеке или датотека компоненти. Када распакујете садржај и наведена је опција „Both“, морају да буду присутне .zip датотеке и комплетног и некомплетног решења и обрађене у једној фасцикли. Приликом паковања и једно и друго је наведено, управљано и неко .зип датотеке се производе из једне фасцикле. Више информација потражите у одељку о раду са управљаним и некоништеним решењима у овом чланку.
/allowWrite:{Yes|No} Опционално. Подразумевана вредност је Да. Овај аргумент се користи само током распакивања. Када је наведено /allowWrite:No, алатка обавља све операције, али је онемогућена у писању или брисању било које датотеке. Операција распакивања може се сигурно оценити без преписивања или брисања било које постојеће датотеке.
/allowDelete:{Yes|No|Prompt} Опционално. Подразумевана вредност је Prompt. Овај аргумент се користи само током распакивања. Када је наведен /аллоwДелете:Yес, све датотеке присутне у фасцикли наведеној по параметру /фасцикле које се не очекују аутоматски се бришу. Када је наведен /аллоwДелете:Но, не долази до брисања. Када је наведено /allowDelete:Prompt, од корисника ће бити затражено преко конзоле да дозволи или забрани све операције брисања. Ако је наведен /аллоwWрите:Но, не долази до брисања чак и ако је наведен /аллоwДелете:Yес.
/clobber Опционално. Овај аргумент се користи само током распакивања. Када је наведен параметар /clobber, датотеке које имају атрибут само за читање се преписују или бришу. Када није наведено, датотеке које имају атрибут само за читање се не преписују нити бришу.
/errorlevel: {Off|Error|Warning|Info|Verbose} Опционално. Подразумевана вредност је Info. Овај аргумент означава ниво информација евидентирања за изношење.
/map: <путања до датотеке> Опционално. Путања и назив .xml датотеке која садржи директиве о мапирању датотека. Када се користе током распакивања, датотеке које се обично читају из фасцикле одређене параметром /folder читају се са алтернативних локација како је одређено у датотеци за мапирање. Током операција паковања, датотеке које се подударају са директивама се не записују.
/nologo Опционално. Потисните банер током извршавања.
/log: <путања до датотеке> Опционално. Путања и назив датотеке евиденције. Ако датотека већ постоји, у њу се додају нове информације евидентирања.
@ <путања до датотеке> Опционално. Путања и назив датотеке која садржи аргументе командне линије за алатку.
/sourceLoc: <ниска> Опционално. Овај аргумент генерише датотеку ресурса предлошка и важи само при распакивању.

Могуће вредности су auto или LCID/ISO кôд за језик који желите да извезете. Када се користи овај аргумент, ресурси стрингова из датог локалног стандарда се распакују као неутрална .resx датотека. Ако се наведе auto или само дугачак или кратак облик прекидача, користи се основни локални стандард или решење. Можете да користите кратки облик команде: /src.
/localize Опционално. Распакујте или обједините све ресурсе ниски у .resx датотеке. Можете да користите кратки облик команде: /loc. Опција локализације подржава заједничке компоненте за .resx датотеке. Више информација:Коришћење РЕСX Веб ресурса

Коришћење аргумента команде /map

Следећа расправа детаљно користи употребу аргумента /map за алатку SolutionPackager.

Датотеке које су уграђене у систем аутоматизоване градње, као што су .xap Silverlight датотеке и склопови додатних компоненти, обично се не проверавају у контроли извора. Веб ресурси су можда већ присутни у контроли извора на локацијама које нису директно компатибилне са алатком СолутионПацкагер. Укључивањем параметра /map, алатка SolutionPackager може бити усмерена на читање и паковање тих датотека са алтернативних локација, а не из фасцикле Extract, као што се то обично ради. Параметар /мапа мора да наведе име и путању до XМЛ датотеке која садржи директиве мапирања. Те директиве налажу СолутионПацкагеру да упореди датотеке са њиховим именом и путањом и назначи алтернативну локацију за проналажење подусне датотеке. Следећа информација се односи на све директиве подједнако.

  • Могуће је да је наведено више директива, укључујући оне директиве које се подударају са идентичним датотекама. Директиве наведене рано у досијеу имају предност у односу на директиве наведене касније.

  • Ако се датотека подудара са било којом директивом, мора се пронаћи на најмање једној алтернативној локацији. Ако се не пронађе одговарајућа алтернатива, СолутионПацкагер издаје грешку.

  • Путање фасцикли и датотека могу бити апсолутне или релативне. Релативне путање се увек оцењују из фасцикле која је наведена у параметру /folder.

  • Променљиве окружења могу се навести употребом синтаксе %variable%.

  • Џокер фасцикла "" може ** се користити за "у било којој потфасцикли". Може се користити само као завршни део путање, на пример: "ц:\фолдерА\ **".

  • Џокер знакови назива датотеке могу се користити само у облику „*.ext“ или „*.*“. Није подржан ниједан други шаблон.

    Овде су описане три врсте мапирања директива, заједно са примером који вам показује како да их користите.

Мапирање фасцикле

Следеће информације пружају детаљне информације о мапирању фасцикли.

XML формат

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

Опис

Путање датотека које се подударају са "фолдерА" се пребацују на "фолдерБ".

  • Хијерархија потфасцикли испод сваке од њих мора се тачно подударати.

  • Џокер знакови фасцикли нису подржани.

  • Не можете наводити називе датотека.

    Примери

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

Мапирање „датотека у датотеку“

Следеће информације пружају више детаља о мапирању датотека у датотеку.

XML формат

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

Опис

Свака датотека која се подудара map са параметром чита се из имена и путање наведене у параметру to .

За параметар map:

  • Назив датотеке мора бити наведен. Путања је опционална. Ако путања није наведена, датотеке из било које фасцикле могу се подударати.

  • Џокер знакови са именом датотеке нису подржани.

  • Џокер знак за фасциклу је подржан.

    За параметар to:

  • Назив датотеке и путања морају бити наведени.

  • Назив датотеке може се разликовати од имена у параметру map.

  • Џокер знакови са именом датотеке нису подржани.

  • Џокер знак за фасциклу је подржан.

Примери

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

У горенаведеном NuGet примеру пакета, cr886_ПлугинПацкагеТест.нупкг се не замењује ако датотека већ постоји на наведеној локацији.

Мапирање датотеке у путању

У наставку су наведене детаљне информације о мапирању „датотека у путању“.

XML формат

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

Опис

Свака датотека која одговара параметру map се чита из путање наведене у параметру to.

За параметар map:

  • Назив датотеке мора бити наведен. Путања је опционална. Ако путања није наведена, датотеке из било које фасцикле могу се подударати.

  • Џокер знакови за назив датотеке су подржани.

  • Џокер знак за фасциклу је подржан.

За параметар to:

  • Путања мора бити наведена.

  • Џокер знак за фасциклу је подржан.

  • Назив датотеке не сме да буде наведен.

    Примери

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

Пример мапирања

Следећи узорак XML кода приказује комплетну датотеку мапирања која омогућава алатки SolutionPackager да чита било који веб-ресурс и два подразумевана генерисана склопа из пројекта у комплету алатки за пројектанте под називом 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>  

Комплетна и некомплетна решења

Dataverse компримована (.zip) датотека решења може се извести у један од два типа, као што је овде приказано.

Комплетно решење
Завршено решење спремно за увоз у организацију. Једном увезене компоненте се не могу додавати или уклањати, мада могу опционално омогућити даље прилагођавање. Ово се препоручује када је развој решења завршен.

Некомплетно решење
Отворено решење без ограничења шта се може додати, уклонити или изменити. Ово се препоручује током развоја решења.

Формат компримоване датотеке решења ће се разликовати у зависности од типа, било да комплетно или некомплетно. SolutionPackager може да обради компримоване датотеке решења било ког типа. Међутим, алатка не може да конвертује један тип у други. Једини начин конвертовања датотека решења у други тип, на пример из некомплетног решења у комплетно, јесте путем увоза .zip датотеке некомплетног решења у Dataverse сервер, а затим извозом тог решења као комплетног.

SolutionPackager може да обрадити .zip датотеке некомплетног и комплетног решења као комбиновани скуп преко параметра /PackageType:Both. Да бисте обавили ову операцију, потребно је да извезете решење два пута за сваки тип, дајући назив .zip датотекама на следећи начин.

.zip датотека некомплетног решења: BiloKojeIme.zip .zip датотека комплетног решења: BiloKojeIme_managed.zip

Алатка ће претпоставити присуство zip датотеке комплетног решења у истој фасцикли као и датотека некомплетног решења и распаковаће обе датотеке у једну фасциклу, одржавајући разлике тамо где постоје комплетне и некомплетне компоненте.

Када се решење распакује као некомплетно и комплетно, могуће је из те једне фасцикле спаковати оба типа или сваки тип појединачно, коришћењем параметра /PackageType да бисте одредили који тип да креирате. Приликом навођења обе датотеке, .зип датотека ће бити произведене помоћу горенаведене конвенције о именовању. Ако недостаје параметар /PackageType приликом паковања из двоструке фасцикле комплетног и некомплетног решења, подразумевано је да се направи једна .zip датотека некомплетног решења.

Решавање проблема

Ако користите Visual Studio да бисте изменили датотеке ресурса креиране у алатки за прављење пакета решења, можда ћете при поновном паковању добити поруку сличну овој: “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.” То се дешава зато што Visual Studio замењује ознаке метаподатака датотеке ресурса ознакама података.

Заобилазно решење

  1. Отворите датотеку ресурса у свом омиљеном уређивачу текста и пронађите и ажурирајте следеће ознаке:

    <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. Промените име чвора из <data> у <metadata>.

    На пример, ова ниска:

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

    Мења се у:

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

    То омогућава уређају за паковање решења да чита и увози датотеку ресурса. Овај проблем је примећен само када користите Visual Studio уређивач ресурса.

Такође погледајте

Коришћење контроле извора помоћу датотека решења
Концепти решења