Делите путем


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

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

Важно

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

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

Алат СолутионПацкагер се дистрибуира као део Microsoft. ЦрмСдк.ЦореТоолс NuGet пакет. Да бисте инсталирали програм, следите ове кораке.

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

Пронађи извршну СолутионПацкагер.еxе у фолдеру < е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“ или „*.*“. Није подржан ниједан други шаблон.

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

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

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

КСМЛ Формат

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

Опис

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

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

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

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

    Примери

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

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

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

КСМЛ Формат

<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_ПлугинПацкагеТест.нупкг се не преписује ако фајл већ постоји на наведеној локацији.

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

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

КСМЛ Формат

<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 уређивач ресурса.

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

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