इसके माध्यम से साझा किया गया


समाधान पैकेजर साधन

सॉल्यूशनपैकेजर एक ऐसा उपकरण है जो एक संपीड़ित समाधान फ़ाइल को कई XML फ़ाइलों और अन्य फ़ाइलों में प्रतिवर्ती रूप से विघटित कर सकता है। Microsoft Dataverse फिर आप स्रोत नियंत्रण प्रणाली का उपयोग करके इन फ़ाइलों को आसानी से प्रबंधित कर सकते हैं। निम्न सेक्शन उपकरण को चलाने एवं प्रबंधित और अप्रबंधित समाधान के साथ उपकरण का उपयोग करने के तरीके के बारे में बताते हैं.

महत्त्वपूर्ण

समाधान पैकेजर उपकरण अब समाधानों को खोलने और पैक करने का अनुशंसित तरीका नहीं है। सॉल्यूशनपैकेजर टूल की क्षमताओं को Power Platform CLI में शामिल कर लिया गया है। pac solution कमांड में unpack, pack, clone, और sync सहित कई क्रियाएं हैं जो SolutionPackager टूल की समान अंतर्निहित क्षमताओं को सम्मिलित करती हैं।

SolutionPackager उपकरण को कहां से प्राप्त करें

SolutionPackager उपकरण Microsoft.CrmSdk.CoreTools NuGet पैकेज के भाग के रूप में वितरित किया जाता है। प्रोग्राम स्थापित करने के लिए, इन चरणों का पालन करें।

  1. पैकेज डाउनलोड करें. NuGet
  2. पैकेज फ़ाइल नाम एक्सटेंशन का नाम .nupkg से बदलकर .zip करें।
  3. संपीड़ित (ज़िप) फ़ाइल की सामग्री निकालें.

<extracted-folder-name>/contents/bin/coretools फ़ोल्डर में SolutionPackager.exe निष्पादन योग्य फ़ाइल ढूँढें। प्रोग्राम को coretools फ़ोल्डर से चलाएँ या उस फ़ोल्डर को अपने PATH में जोड़ें।

SolutionPackager आदेश-पंक्ति तर्क

SolutionPackager एक आदेश-पंक्ति उपकरण है, जिसे निम्न तालिका में पहचाने गए पैरामीटर के साथ इनवोक किया जा सकता है.

तर्क विवरण
/action: {Extract|Pack} आवश्यक. निष्पादित की जाने वाली क्रिया. क्रिया या तो फ़ोल्डर से एक समाधान .zip फ़ाइल निकालने की हो सकती है या एक .zip फ़ाइल में एक फ़ोल्डर को पैक करने की हो सकती है.
/zipfile: <file path> आवश्यक. समाधान .zip फ़ाइल का पथ और नाम. निकालते समय, फ़ाइल मौजूद होनी चाहिए और पढ़ने योग्य होनी चाहिए। पैकिंग करते समय, फ़ाइल को बदल दिया जाता है.
/folder: <folder path> आवश्यक. फ़ोल्डर का पथ. निकालते समय, यह फ़ोल्डर बनाया जाता है और घटक फ़ाइलों के साथ पोप्युलेट किया जाता है. पैकिंग करते समय, यह फ़ोल्डर पहले से मौजूद होना चाहिए और उसमें पहले निकाली गई घटक फ़ाइलें शामिल होनी चाहिए.
/packagetype: {Unmanaged|Managed|Both} ऑप्शनल. संसाधित करने के लिए पैकेज का प्रकार. डिफ़ॉल्ट मान Unmanaged है. यह तर्क अधिकांश अवसरों में छोड़ा जा सकता है, क्योंकि पैकेज प्रकार को .zip फ़ाइल या घटक फ़ाइलों के अंदर से पढ़ा जा सकता है. निकालते समय और दोनों के निर्दिष्ट होने पर, प्रबंधित और अप्रबंधित समाधान .zip फ़ाइलें मौजूद होनी चाहिए और एकल फ़ोल्डर में संसाधित की जानी चाहिए. जब पैकिंग और दोनों निर्दिष्ट किया जाता है, तो प्रबंधित और अप्रबंधित समाधान .zip फ़ाइलें एक फ़ोल्डर से उत्पन्न होती हैं। अधिक जानकारी के लिए, इस आलेख में आगे प्रबंधित और अप्रबंधित समाधानों के साथ कार्य करने संबंधी अनुभाग देखें.
/allowWrite:{Yes|No} ऑप्शनल. डिफ़ॉल्ट मान हाँ है. इस तर्क का उपयोग केवल निष्कर्षण के दौरान किया जाता है. /allowWrite:No निर्दिष्ट होने पर, उपकरण सभी कार्रवाइयाँ करता है, लेकिन किसी भी फ़ाइल को लिखने या हटाने से उसे रोका जाता है. निष्कर्षण कार्रवाई किसी भी मौजूदा फ़ाइल को अधिलेखित या हटाए बिना सुरक्षित रूप से मूल्यांकित की जा सकती है.
/allowDelete:{Yes|No|Prompt} ऑप्शनल. डिफ़ॉल्ट मान Prompt है. इस तर्क का उपयोग केवल निष्कर्षण के दौरान किया जाता है. जब /allowDelete:Yes निर्दिष्ट किया जाता है, तो /folder पैरामीटर द्वारा निर्दिष्ट फ़ोल्डर में मौजूद कोई भी फ़ाइल जो अपेक्षित नहीं है, स्वचालित रूप से हटा दी जाती है। जब /allowDelete:No निर्दिष्ट किया जाता है, तो कोई विलोपन नहीं होता. /allowDelete:Prompt निर्दिष्ट होने पर, उपयोगकर्ता को सभी हटाने संबंधी कार्रवाई को अनुमति देने या न देने के लिए कंसोल के माध्यम से संकेत दिया जाता है. यदि /allowWrite:No निर्दिष्ट किया गया है, तो कोई भी विलोपन नहीं होगा, भले ही /allowDelete:Yes भी निर्दिष्ट किया गया हो।
/clobber ऑप्शनल. इस तर्क का उपयोग केवल निष्कर्षण के दौरान किया जाता है. /clobber निर्दिष्ट होने पर, ऐसी फ़ाइलें, जिनमें केवल-पढ़ने के लिए एट्रिब्यूट सेट है, वे अधिलेखित या हटाई जाती हैं. निर्दिष्ट नहीं होने पर, ऐसी फ़ाइलें, जिनमें केवल-पढ़ने के लिए एट्रिब्यूट है, वे अधिलेखित या हटाई नहीं जाती हैं.
/errorlevel: {Off|Error|Warning|Info|Verbose} ऑप्शनल. डिफ़ॉल्ट मान Info है. यह तर्क आउटपुट किए जाने वाले लॉगिंग जानकारी के स्तर को इंगित करता है.
/map: <file path> ऑप्शनल. उस .xml फ़ाइल का पथ और नाम, जिसमें फ़ाइल मैपिंग निर्देश हैं. निष्कर्षण के दौरान उपयोग किए जाने पर, /folder पैरामीटर द्वारा निर्दिष्ट फ़ोल्डर के अंदर आमतौर पर पढ़ी जाने वाली फाइलें, मैपिंग फ़ाइल में निर्दिष्ट वैकल्पिक स्थानों से पढ़ी जाती हैं. पैक कार्रवाई के दौरान, निर्देश से मेल खाने वाली फाइलें नहीं लिखी जाती हैं.
/nologo ऑप्शनल. रनटाइम पर बैनर को दबाएँ.
/log: <file path> ऑप्शनल. लॉग फ़ाइल का पथ और नाम. यदि फ़ाइल पहले से मौजूद होती है, तो नई लॉगिंग जानकारी फ़ाइल में जोड़ी जाती है.
@ <file path> ऑप्शनल. उस फ़ाइल का पथ और नाम, जिसमें उपकरण के लिए आदेश-पंक्ति तर्क हैं.
/sourceLoc: <string> ऑप्शनल. यह तर्क एक टेम्पलेट संसाधन फ़ाइल जरनेट करता है और केवल निकाले जाने पर मान्य होता है.

उस भाषा के लिए संभावित मान auto हैं या LCID/ISO कोड है, जिसे आप निर्यात करना चाहते हैं. जब इस तर्क का उपयोग किया जाता है, तो दिए गए लोकेल से स्ट्रिंग संसाधनों को एक न्यूट्रल .resx फ़ाइल के रूप में निकाला जाता है. यदि auto या बस स्विच के लंबे या छोटे स्वरूप को निर्दिष्ट किया जाता है, तो आधार लोकेल या समाधान का उपयोग किया जाता है. आप आदेश के संक्षिप्त स्वरूप का उपयोग कर सकते हैं: /src.
/localize ऑप्शनल. सभी स्ट्रिंग संसाधनों को निकालें या .resx फ़ाइलों में मर्ज करें. आप आदेश के संक्षिप्त स्वरूप का उपयोग कर सकते हैं: /loc. .resx फ़ाइलों के लिए स्थानीयकरण विकल्प साझा घटकों का समर्थन करता है. अधिक जानकारी: RESX वेब संसाधनों का उपयोग करना

/map आदेश तर्क का उपयोग करें

निम्न चर्चा, SolutionPackager उपकरण के लिए /map तर्क का उपयोग करने का वर्णन करती है.

स्वचालित निर्माण सिस्टम में निर्मित फाइलें, जैसे .xap Silverlight फ़ाइलें और प्लग-इन असेंबली, आमतौर पर स्रोत नियंत्रण में जाँची नहीं जाती हैं. वेब संसाधन पहले से ही स्रोत नियंत्रण में ऐसे स्थानों पर मौजूद हो सकते हैं जो SolutionPackager उपकरण के साथ सीधे संगत नहीं हैं। /map पैरामीटर को शामिल करके, SolutionPackager उपकरण को ऐसी फ़ाइलों को वैकल्पिक स्थानों से पढ़ने और पैकेज करने के लिए निर्देशित किया जा सकता है, न कि निष्कर्षण फ़ोल्डर के अंदर से, जैसा कि आमतौर पर किया जाएगा. /map पैरामीटर को मैपिंग निर्देशों वाली XML फ़ाइल का नाम और पथ निर्दिष्ट करना होगा। ये निर्देश SolutionPackager को फ़ाइलों को उनके नाम और पथ से मिलान करने का निर्देश देते हैं, तथा मिलान की गई फ़ाइल को खोजने के लिए वैकल्पिक स्थान का संकेत देते हैं। निम्न जानकारी सभी निर्देशों पर समान रूप से लागू होती है.

  • एकाधिक निर्देश सूचीबद्ध किए जा सकते हैं, जिनमें समान फ़ाइलों से मेल खाने वाले निर्देश भी शामिल हो सकते हैं। फ़ाइल में आरंभ में सूचीबद्ध निर्देशों को बाद में सूचीबद्ध निर्देशों पर वरीयता दी जाती है।

  • यदि फ़ाइल किसी निर्देश से मेल खाती है, तो उसे कम से कम एक वैकल्पिक स्थान पर मिलना चाहिए. यदि कोई मेल खाता विकल्प नहीं मिलता है, तो SolutionPackager एक त्रुटि जारी करता है।

  • फ़ोल्डर और फ़ाइल पथ निरपेक्ष या सापेक्ष हो सकते हैं. सापेक्ष पथ हमेशा /folder पैरामीटर द्वारा निर्दिष्ट फ़ोल्डर से मूल्यांकन किए जाते हैं.

  • परिवेश चर को %variable% सिंटैक्स का उपयोग करके निर्दिष्ट किया जा सकता है.

  • फ़ोल्डर वाइल्डकार्ड "**" का उपयोग "किसी भी सबफ़ोल्डर में" के अर्थ में किया जा सकता है। इसका उपयोग केवल पथ के अंतिम भाग के रूप में किया जा सकता है, उदाहरण के लिए: "c:\folderA\**".

  • फ़ाइल नाम वाइल्डकार्ड का उपयोग केवल “*.ext” या “*.*” स्वरूपों में किया जा सकता है. कोई अन्य पैटर्न समर्थित नहीं है.

    यहाँ तीन प्रकार की निर्देश मैपिंग का वर्णन यहां किया गया है, साथ ही एक उदाहरण दिया गया है, जो आपको दिखाता है कि उनका उपयोग कैसे करें.

फ़ोल्डर मैपिंग

निम्नलिखित जानकारी फ़ोल्डर मैपिंग पर विस्तृत जानकारी प्रदान करती है।

XML प्रारूप

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

वर्णन

"folderA" से मेल खाने वाले फ़ाइल पथों को "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" /> 

उपरोक्त पैकेज उदाहरण में, यदि फ़ाइल पहले से ही निर्दिष्ट स्थान पर मौजूद है, तो cr886_PluginPackageTest.nupkg को अधिलेखित नहीं किया जाता है। NuGet

फ़ाइल टू पथ मैपिंग

फ़ाइल-टू-पथ मैपिंग के बारे में, निम्न विस्तृत जानकारी प्रदान करता है.

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 कोड नमूना एक पूर्ण मैपिंग फ़ाइल दिखाता है, जो किसी वेब संसाधन और CRMDevTookitSample नामक डेवलपर टूलकिट परियोजना से डिफ़ॉल्ट रूप से जनरेट की गई दो असेंबली को पढ़ने के लिए SolutionPackager उपकरण को सक्षम करती है.

<?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, /PackageType:Both पैरामीटर के माध्यम से अप्रबंधित और प्रबंधित समाधान .zip फ़ाइलों को एक संयोजित सेट के रूप में संसाधित कर सकता है. इस कार्रवाई को करने के लिए, .zip फ़ाइलों को निम्नानुसार नाम देते हुए अपने समाधान को प्रत्येक प्रकार के रूप में दो बार निर्यात करना आवश्यक है.

अप्रबंधित .zip फ़ाइल: AnyName.zip प्रबंधित .zip फ़ाइल: AnyName_managed.zip

उपकरण अप्रबंधित फ़ाइल के रूप में एक ही फ़ोल्डर में प्रबंधित ज़िप फ़ाइल की उपस्थिति को मान लेगा और अंतर को संरक्षित रखते हुए, जहाँ प्रबंधित और अप्रबंधित घटक मौजूद हैं, दोनों फ़ाइलों को एकल फ़ोल्डर में निकाल देगा.

समाधान को अप्रबंधित और प्रबंधित के रूप में निकालने के बाद, यह निर्दिष्ट करने के लिए कि कौन सा प्रकार बनाया जाए, /PackageType का उपयोग करके उस एकल फ़ोल्डर से दोनों को या अलग-अलग प्रत्येक प्रकार को पैक करना संभव है. दोनों फ़ाइलों को निर्दिष्ट करते समय, उपरोक्त नामकरण पद्धति का उपयोग करके दो .zip फ़ाइलें तैयार की जाएंगी। यदि ड्युअल प्रबंधित और अप्रबंधित फ़ोल्डर से पैकिंग करते समय /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 संसाधन संपादक का उपयोग करने के दौरान देखी गई है.

इसे भी देखें

समाधान फ़ाइलों के साथ स्रोत नियंत्रण का उपयोग करें
समाधान अवधारणाएँ