Εργαλείο SolutionPackager

Το SolutionPackager είναι ένα εργαλείο που μπορεί να αποσυνθέσει αντίστροφα ένα Microsoft Dataverse συμπιεσμένο αρχείο λύσης σε πολλαπλά αρχεία XML και άλλα αρχεία. Στη συνέχεια, μπορείτε εύκολα να διαχειριστείτε αυτά τα αρχεία χρησιμοποιώντας ένα σύστημα ελέγχου προέλευσης. Οι παρακάτω ενότητες σάς δείχνουν τον τρόπο εκτέλεσης του εργαλείου και τον τρόπο χρήσης του εργαλείου με διαχειριζόμενες και μη διαχειριζόμενες λύσεις.

Σημαντικό

Το εργαλείο SolutionPackager δεν είναι πλέον ο προτεινόμενος τρόπος για να αποσυμπιέσετε και να συσκευάσετε λύσεις. Οι δυνατότητες του εργαλείου SolutionPackager ενσωματώνονται στο CLI του Power Platform. Η pac solution εντολή έχει πολλά ρήματα, συμπεριλαμβανομένων των unpack, pack, cloneκαι sync τα οποία ενσωματώνουν τις ίδιες υποκείμενες δυνατότητες του εργαλείου SolutionPackager.

Πού θα βρείτε το εργαλείο SolutionPackager

Το εργαλείο SolutionPackager διανέμεται ως μέρος του πακέτου Microsoft.CrmSdk.CoreTools NuGet. Για να εγκαταστήσετε το πρόγραμμα. ακολουθήστε αυτά τα βήματα.

  1. Κάντε λήψη του πακέτου NuGet.
  2. Μετονομάστε την επέκταση ονόματος αρχείου πακέτου από .nupkg σε .zip.
  3. Εξαγάγετε τα περιεχόμενο του συμπιεσμένου αρχείου (zip).

Βρείτε το SolutionPackager.exe εκτελέσιμο στον φάκελο <extracted-folder-name>/contents/bin/coretools. Εκτελέστε το πρόγραμμα από το φάκελο coretools ή προσθέστε αυτόν το φάκελο στο PATH σας.

Ορίσματα γραμμής εντολών SolutionPackager

Το SolutionPackager είναι ένα εργαλείο γραμμής εντολών που μπορεί να ενεργοποιηθεί με τις παραμέτρους που προσδιορίζονται στον παρακάτω πίνακα.

Όρισμα Περιγραφή
/δράση: {Απόσπασμα|Πακέτο} Υποχρεωτικό. Η ενέργεια που πρέπει να εκτελεστεί. Η ενέργεια μπορεί να είναι είτε η εξαγωγή μιας λύσης .zip αρχείου σε ένα φάκελο είτε η συσκευασία ενός φακέλου σε ένα αρχείο .zip.
/zipfile: <διαδρομή αρχείου> Υποχρεωτικό. Η διαδρομή και το όνομα ενός αρχείου λύσης .zip. Κατά την εξαγωγή, το αρχείο πρέπει να υπάρχει και να έχει δυνατότητα ανάγνωσης. Κατά τη συσκευασία, το αρχείο αντικαθίσταται.
/folder: <διαδρομή φακέλου> Υποχρεωτικό. Η διαδρομή προς ένα φάκελο. Κατά την εξαγωγή, αυτός ο φάκελος δημιουργείται και συμπληρώνεται με αρχεία στοιχείων. Κατά τη συσκευασία, αυτός ο φάκελος πρέπει να υπάρχει ήδη και να περιέχει αρχεία στοιχείων που έχουν εξαχθεί προηγουμένως.
/packagetype: {Μη διαχειριζόμενο|Διαχείριση|Και τα δύο} Προαιρετικό. Τύπος πακέτου προς επεξεργασία. Η προεπιλεγμένη τιμή είναι Μη διαχειριζόμενη. Αυτό το όρισμα μπορεί να παραλειφθεί στις περισσότερες περιπτώσεις, επειδή ο τύπος του πακέτου μπορεί να διαβαστεί μέσα από το αρχείο .zip ή τα αρχεία στοιχείων. Κατά την εξαγωγή και εάν καθοριστεί "Και τα δύο", τα αρχεία .zip διαχειριζόμενης και μη διαχειριζόμενης λύσης πρέπει να είναι παρόντα και να υπόκεινται σε επεξεργασία σε έναν μόνο φάκελο. Κατά τη συμπίεση και όταν καθορίζεται Και τα δύο, τα αρχεία .zip διαχειριζόμενης και μη διαχειριζόμενης λύσης παράγονται από ένα φάκελο. Για περισσότερες πληροφορίες, ανατρέξτε στην ενότητα σχετικά με την εργασία με διαχειριζόμενες και μη διαχειριζόμενες λύσεις στη συνέχεια αυτού του άρθρου.
/allowWrite:{Ναι|Όχι} Προαιρετικό. Η προεπιλεγμένη τιμή είναι Ναι. Αυτό το όρισμα χρησιμοποιείται μόνο κατά τη διάρκεια εξαγωγής δεδομένων. Όταν ορίζεται /allowWrite:No, το εργαλείο εκτελεί όλες τις λειτουργίες, αλλά δεν επιτρέπεται η εγγραφή ή η διαγραφή οποιωνδήποτε αρχείων. Η λειτουργία εξαγωγής μπορεί να εκτιμηθεί με ασφάλεια χωρίς να αντιγραφούν ή να διαγραφούν τα υπάρχοντα αρχεία.
/allowDelete:{Ναι|Όχι|Προτροπή} Προαιρετικό. Η προεπιλεγμένη τιμή είναι Prompt. Αυτό το όρισμα χρησιμοποιείται μόνο κατά τη διάρκεια εξαγωγής δεδομένων. Όταν ορίζεται /allowDelete:Yes, όλα τα αρχεία που υπάρχουν στο φάκελο που καθορίζεται από την παράμετρο /folder τα οποία δεν είναι αναμενόμενα, διαγράφονται αυτόματα. Όταν ορίζεται /allowDelete:No, δεν πραγματοποιούνται διαγραφές. Όταν ορίζεται /allowDelete:Prompt, ζητείται από το χρήστη μέσω της κονσόλας να ορίσει αν επιτρέπονται ή απορρίπτονται όλες οι λειτουργίες διαγραφής. Εάν καθορίζεται /allowWrite:No, δεν γίνονται διαγραφές ακόμα και αν ορίζεται /allowDelete:Yes.
/Κλόμπερ Προαιρετικό. Αυτό το όρισμα χρησιμοποιείται μόνο κατά τη διάρκεια εξαγωγής δεδομένων. Όταν καθορίζεται το /clobber, τα αρχεία που έχουν ένα σύνολο χαρακτηριστικών μόνο για ανάγνωση αντικαθίστανται ή διαγράφονται. Όταν δεν καθορίζεται, τα αρχεία με το χαρακτηριστικό μόνο για ανάγνωση δεν αντικαθίστανται ή διαγράφονται.
/errorlevel: {Απενεργοποίηση|Σφάλμα |Προειδοποίηση|Πληροφορίες |Λεπτομερής} Προαιρετικό. Η προεπιλεγμένη τιμή είναι Πληροφορίες. Αυτό το όρισμα υποδεικνύει το επίπεδο των πληροφοριών καταγραφής προς έξοδο.
/map: <διαδρομή αρχείου> Προαιρετικό. Η διαδρομή και το όνομα ενός αρχείου .xml που περιέχει οδηγίες αντιστοίχισης αρχείων. Όταν χρησιμοποιούνται κατά τη διάρκεια μιας εξαγωγής, τα αρχεία που συνήθως διαβάζονται μέσα από το φάκελο που καθορίζεται από την παράμετρο /folder διαβάζονται από εναλλακτικές θέσεις, όπως καθορίζεται στο αρχείο αντιστοίχισης. Κατά τη διάρκεια μιας λειτουργίας συσκευασίας, τα αρχεία που αντιστοιχούν στις οδηγίες δεν γράφονται.
/nologo Προαιρετικό. Απόκρυψη του banner κατά το χρόνο εκτέλεσης.
/log: <διαδρομή αρχείου> Προαιρετικό. Μια διαδρομή και ένα όνομα σε ένα αρχείο καταγραφής. Εάν το αρχείο υπάρχει ήδη, νέες πληροφορίες καταγραφής προσαρτώνται στο αρχείο.
<@ διαδρομή αρχείου> Προαιρετικό. Μια διαδρομή και ένα όνομα σε ένα αρχείο που περιέχει ορίσματα γραμμής εντολών για το εργαλείο.
/sourceLoc: <συμβολοσειρά> Προαιρετικό. Αυτό το όρισμα δημιουργεί ένα αρχείο πόρων προτύπου και είναι έγκυρο μόνο κατά την εξαγωγή.

Οι πιθανές τιμές είναι auto ή ένας κωδικός LCID/ISO για τη γλώσσα που θέλετε να εξαγάγετε. Όταν χρησιμοποιείται αυτό το όρισμα, οι πόροι συμβολοσειράς από τις δεδομένες τοπικές ρυθμίσεις εξάγονται ως ουδέτερο αρχείο .resx. Εάν ορίζεται auto ή μόνο η μεγάλη ή σύντομη μορφή του διακόπτη, χρησιμοποιούνται οι βασικές τοπικές ρυθμίσεις ή η λύση. Μπορείτε να χρησιμοποιήσετε τη σύντομη μορφή της εντολής: /src.
/localize Προαιρετικό. Εξαγάγετε ή συγχωνεύστε όλους τους πόρους συμβολοσειράς σε αρχεία .resx. Μπορείτε να χρησιμοποιήσετε τη σύντομη μορφή της εντολής: /loc. Η επιλογή μετάφρασης υποστηρίζει κοινόχρηστα στοιχεία για αρχεία .resx. Περισσότερες πληροφορίες: ΙΧρησιμοποιώντας πόρους Web RESX
/SolutionName: <όνομα> Προαιρετικό. Το μοναδικό όνομα της λύσης για συσκευασία ή εξαγωγή όταν ο φάκελος προέλευσης περιέχει πολλές λύσεις στην περιοχή solutions/*/solution.yml. Απαιτείται όταν ανιχνεύονται περισσότερες από μία λύσεις. Ισχύει μόνο για τη μορφή στοιχείου ελέγχου προέλευσης YAML. Μπορείτε να χρησιμοποιήσετε τη σύντομη μορφή της εντολής: /sn.
/remapPluginTypeNames Προαιρετικό. Όταν προσδιοριστεί, τα πλήρως προσδιορισμένα ονόματα τύπων προσθηκών αναχαρτογραφούνται με βάση τις συναρμολογήσεις που περιλαμβάνονται στη λύση. Ενεργοποιημένη από προεπιλογή στη μορφή στοιχείου ελέγχου προέλευσης YAML. Μπορείτε να χρησιμοποιήσετε τη σύντομη μορφή της εντολής: /fp.

Μορφές αρχείου ελέγχου προέλευσης

Το SolutionPackager υποστηρίζει δύο διατάξεις φακέλων κατά την εξαγωγή και τη συσκευασία λύσεων.

Μορφή XML (παλαιού τύπου)

Η αρχική μορφή. Τα μετα-δεδομένα λύσης αποθηκεύονται στα Other\Solution.xml και Other\Customizations.xml, και όλα τα αρχεία στοιχείων εξάγονται σε μια ιεραρχία επίπεδων φακέλων μαζί με αυτά τα αρχεία. Αυτή η μορφή είναι η προεπιλεγμένη μορφή κατά την εξαγωγή ενός .zip αρχείου χωρίς περισσότερες ρυθμίσεις παραμέτρων.

Μορφή ελέγχου προέλευσης YAML

Παρουσιάστηκε παράλληλα με την ενοποίηση του Dataverse Git, αυτή η μορφή αποθηκεύει τα μετα-δεδομένα λύσης ως αρχεία YAML που διανέμονται σε μια δομημένη ιεραρχία φακέλων. Είναι η μορφή που συντάσσεται όταν διαπράττετε λύσεις χρησιμοποιώντας εγγενή ενοποίηση Git σε Power Apps.

Πλεονεκτήματα έναντι της μορφής XML

  • Παράγει καθαρότερες και πιο ευανάγνωστες διαφορών ανά στοιχείο στον έλεγχο προέλευσης
  • Υποστηρίζει πολλές λύσεις σε έναν φάκελο μοναδικού αποθετηρίου δεδομένων
  • Τα αρχεία εφαρμογών .msapp καμβάτων και οι μοντέρνες ροές υποστηρίζονται μόνο σε αυτήν τη μορφή
  • Η επαναχαρτογράφηση τύπου ονόματος plugin είναι ενεργοποιημένη από προεπιλογή.

Απαιτούμενη δομή φακέλων

<rootFolder>/
├── solutions/
│   └── <SolutionUniqueName>/
│       ├── solution.yml              (solution metadata)
│       ├── solutioncomponents.yml    (paths to all component files)
│       ├── rootcomponents.yml        (root-level components)
│       └── missingdependencies.yml   (dependency info)
├── publishers/
│   └── <PublisherUniqueName>/
│       └── publisher.yml             (publisher definition)
├── entities/                         (entity components, if present)
├── workflows/                        (classic workflows, if present)
├── modernflows/                      (Power Automate cloud flows, if present)
├── canvasapps/                       (canvas app .msapp files, if present)
└── [other component folders]/

Σημαντικό

Η μορφή YAML ανιχνεύεται αυτόματα από την παρουσία ενός solutions/ υποφακέλου που περιέχει *solution.yml αρχεία. Εάν τα αρχεία διακήρυξης YAML (solution.yml, solutioncomponents.ymlκαι ούτω καθεξής) τοποθετούνται στη ρίζα του φακέλου αντί κάτω solutions/<SolutionUniqueName>/από το , το εργαλείο δεν εντοπίζει τη μορφή YAML. Το εργαλείο επιστρέφει στη διαδρομή XML και αναφέρει ένα παραπλανητικό σφάλμα σχετικά με ένα σφάλμα που λείπει Customizations.xml. Ανατρέξτε στο θέμα Αντιμετώπιση προβλημάτων για πληροφορίες σχετικά με τον τρόπο επίλυσης αυτού του προβλήματος.

Περισσότερες πληροφορίες: Αναφορά μορφής στοιχείου ελέγχου προέλευσης YAML λύσης

Μορφοποίηση κανόνων αυτόματου εντοπισμού

Κατάσταση Μορφή που χρησιμοποιείται
solutions/*/solution.yml βρέθηκαν — ακριβώς μία λύση Μορφή YAML, όπου το όνομα της λύσης συνάγεται από τον φάκελο
solutions/*/solution.yml βρέθηκαν — πολλαπλές λύσεις Μορφή YAML, όπου απαιτείται το /SolutionName όρισμα
Δεν υπάρχει solutions/ υποκατάλογος Μορφή XML (παλαιού τύπου)

Συσκευασία ενός φακέλου μορφής YAML

Οι ακόλουθες εντολές συσκευάζουν έναν φάκελο μορφής YAML.

SolutionPackager.exe /action:Pack /zipfile:MySolution.zip /folder:C:\repos\myrepo

Συσκευασία από φάκελο πολλαπλών λύσεων

Οι ακόλουθες εντολές συσκευάζουν μια καθορισμένη λύση σε έναν φάκελο πολλαπλών λύσεων.

SolutionPackager.exe /action:Pack /zipfile:SolutionA.zip /folder:C:\repos\myrepo /SolutionName:SolutionA

Χρήση του ορίσματος εντολής /map

Η ακόλουθη ανάλυση περιγράφει λεπτομερώς τη χρήση του ορίσματος /map στο εργαλείο SolutionPackager.

Τα αρχεία που είναι ενσωματωμένα σε ένα αυτοματοποιημένο σύστημα δόμησης, όπως τα αρχεία Silverlight .xap και τα συγκροτήματα προσθηκών, συνήθως δεν ελέγχονται στον έλεγχο προέλευσης. Οι πόροι web μπορεί να είναι ήδη παρόντες στον έλεγχο προέλευσης σε θέσεις που δεν είναι άμεσα συμβατές με το εργαλείο SolutionPackager. Συμπεριλαμβάνοντας την παράμετρο /map, το εργαλείο SolutionPackager μπορεί να κατευθυνθεί για να διαβάσει και να συσκευάσει τέτοια αρχεία από εναλλακτικές θέσεις και όχι μέσα από το φάκελο Extract όπως θα γινόταν συνήθως. Η παράμετρος /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" /> 

Στο παραπάνω παράδειγμα πακέτου NuGet, το cr886_PluginPackageTest.nupkg δεν αντικαθίσταται αν το αρχείο υπάρχει ήδη στην καθορισμένη θέση.

Αντιστοίχιση αρχείου με διαδρομή

Παρακάτω παρέχονται λεπτομερείς πληροφορίες σχετικά με την αντιστοίχιση αρχείου με διαδρομή.

Μορφή 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 την ανάγνωση οποιουδήποτε πόρου web και των δύο προεπιλεγμένων συγκροτημάτων που παράγονται από ένα έργο Developer Toolkit με την ονομασία 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>  

Διαχειριζόμενες και μη διαχειριζόμενες λύσεις

Μπορείτε να εξαγάγετε ένα αρχείο συμπιεσμένης λύσης (. zip) Dataverse σε έναν από δύο τύπους, όπως φαίνεται εδώ.

Διαχειριζόμενη λύση
Μια ολοκληρωμένη λύση έτοιμη για εισαγωγή σε έναν οργανισμό. Μετά την εισαγωγή, τα στοιχεία δεν μπορούν να προστεθούν ή να καταργηθούν, παρόλο που μπορούν προαιρετικά να επιτρέψουν περαιτέρω προσαρμογή. Αυτό συνιστάται όταν ολοκληρωθεί η ανάπτυξη της λύσης.

Μη διαχειριζόμενη λύση
Μια ανοιχτή λύση χωρίς περιορισμούς σχετικά με το τι μπορεί να προστεθεί, να καταργηθεί ή να τροποποιηθεί. Αυτό συνιστάται κατά την ανάπτυξη μιας λύσης.

Η μορφή ενός συμπιεσμένου αρχείου λύσης θα διαφέρει ανάλογα με τον τύπο του, διαχειριζόμενο ή μη διαχειριζόμενο. Το SolutionPackager μπορεί να επεξεργαστεί συμπιεσμένα αρχεία λύσης οποιουδήποτε τύπου. Ωστόσο, το εργαλείο δεν μπορεί να μετατρέψει έναν τύπο σε έναν άλλο. Ο μόνος τρόπος για να μετατρέψετε αρχεία λύσης σε διαφορετικό τύπο, για παράδειγμα από μη διαχειριζόμενη σε διαχειριζόμενη, είναι με την εισαγωγή του αρχείου. zip της μη διαχειριζόμενης λύσης σε διακομιστή Dataverse και, στη συνέχεια, την εξαγωγή της λύσης ως διαχειριζόμενης λύσης.

Το SolutionPackager μπορεί να επεξεργαστεί αρχεία. zip μη διαχειριζόμενων και διαχειριζόμενων λύσεων ως ένα συνδυασμένο σύνολο μέσω της παραμέτρου /PackageType:Both. Για να εκτελέσετε αυτήν τη λειτουργία, είναι απαραίτητο να εξαγάγετε τη λύση σας δύο φορές ως κάθε τύπο, ονομάζοντας τα αρχεία .zip ως εξής.

Μη διαχειριζόμενο αρχείο .zip: AnyName.zip

Διαχειριζόμενο αρχείο .zip: AnyName_managed.zip

Το εργαλείο θα θεωρήσει την παρουσία του διαχειριζόμενου αρχείου zip στον ίδιο φάκελο με το μη διαχειριζόμενο αρχείο και θα εξαγάγει και τα δύο αρχεία σε έναν μόνο φάκελο διατηρώντας τις διαφορές όπου υπάρχουν διαχειριζόμενα και μη διαχειριζόμενα στοιχεία.

Αφού γίνει εξαγωγή μιας λύσης τόσο ως μη διαχειριζόμενης όσο και διαχειριζόμενης, είναι δυνατή η χρήση του ίδιου φακέλου για τη συμπίεση και των δύο ή κάθε τύπου μεμονωμένα, με χρήση της παραμέτρου /PackageType για τον καθορισμό του τύπου που θα δημιουργηθεί. Όταν καθορίζετε και τα δύο αρχεία, τα δύο αρχεία. zip θα παράγονται με τη χρήση της παρακάτω σύμβασης ονομασίας. Εάν η παράμετρος /PackageType λείπει κατά τη συμπίεση από έναν διπλό διαχειριζόμενο και μη διαχειριζόμενο φάκελο, η προεπιλογή είναι να παραχθεί ένα μόνο μη διαχειριζόμενο αρχείο. zip.

Επίλυση προβλημάτων

Μήνυμα που εμφανίζεται όταν χρησιμοποιείτε Visual Studio για την επεξεργασία αρχείων πόρων

Εάν χρησιμοποιείτε 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.

Σφάλμα: "Δεν είναι δυνατή η εύρεση του απαιτούμενου αρχείου ...\Other\Customizations.xml" με έναν φάκελο YAML

Αυτό το σφάλμα εμφανίζεται όταν εκτελείτε το SolutionPackager (ή pac solution packτο ) σε έναν φάκελο που περιέχει αρχεία YAML όπως solution.yml, αλλά αυτά τα αρχεία τοποθετούνται στη ρίζα του φακέλου αντί μέσα στον απαιτούμενο solutions/<SolutionUniqueName>/ υποφάκελο.

Προκαλέσει: Το εργαλείο εντοπίζει τη μορφή στοιχείου ελέγχου προέλευσης YAML, αναζητώντας έναν solutions/ υποφάκελο που περιέχει *solution.yml αρχεία. Όταν απουσιάζει αυτός ο κατάλογος, το εργαλείο επιστρέφει σιωπηρά στη μορφή XML (παλαιού τύπου) και αναμένει Other\Customizations.xml. Το μήνυμα σφάλματος που προκύπτει αναφέρεται σε ένα αρχείο XML και δεν αναφέρει το YAML, το οποίο είναι παραπλανητικό.

Επιδιόρθωση: Αναδιοργανώστε τον φάκελο έτσι ώστε τα αρχεία διακήρυξης YAML να βρίσκονται κάτω από τις σωστές διαδρομές:

<rootFolder>/
  solutions/<YourSolutionUniqueName>/   ← move solution.yml here
    solution.yml
    solutioncomponents.yml
    rootcomponents.yml
    missingdependencies.yml
  publishers/<YourPublisherUniqueName>/
    publisher.yml

Εάν αποκτήσατε τον φάκελο από μια δέσμευση ενοποίησης Git ή pac solution clone, η δομή φακέλων θα πρέπει να είναι ήδη σωστή. Ένας φάκελος που περιέχει μόνο τα αρχεία YAML ανώτατου επιπέδου χωρίς τον solutions/ υποκατάλογο αντιπροσωπεύει ένα ελλιπές απόσπασμα και δεν μπορεί να συσκευαστεί απευθείας.

Προειδοποίηση: Το στοιχείο που δηλώνεται στο rootcomponents.yml δεν διαθέτει αρχεία προέλευσης

Αυτή η προειδοποίηση εμφανίζεται όταν ένα στοιχείο, όπως μια εφαρμογή καμβά, αναφέρεται στο rootcomponents.yml , αλλά δεν υπάρχουν αντίστοιχα αρχεία προέλευσης στον αναμενόμενο φάκελο στοιχείων (για παράδειγμα, canvasapps/<schema-name>/).

Επίδραση: Το εργαλείο εξακολουθεί να επιτυγχάνει (κωδικός εξόδου 0) και παράγει ένα έγκυρο .zip αρχείο, αλλά το δηλωμένο στοιχείο παραλείπεται από τη συσκευασμένη λύση.

Προκαλέσει: Ο φάκελος δημιουργήθηκε από ένα μερικό απόσπασμα ή τα αρχεία προέλευσης του στοιχείου δεν συμπεριλήφθηκαν στο αποθετήριο δεδομένων. Για παράδειγμα, μόνο τα αρχεία διακήρυξης λύσης δεσμεύτηκαν και όχι η ίδια η εφαρμογή καμβά.

Επιδιόρθωση: Βεβαιωθείτε ότι όλα τα στοιχεία που δηλώνονται στο rootcomponents.yml έχουν αντίστοιχα αρχεία προέλευσης που υπάρχουν στον φάκελο. Για εφαρμογές καμβά, το .msapp αρχείο πρέπει να υπάρχει στην περιοχή canvasapps/<schema-name>/. Εάν λείπουν αρχεία, εξαγάγετε ξανά την πλήρη λύση από το Dataverse και αποσυμπιεσμένο ξανά ή χρησιμοποιήστε pac solution clone το για να λάβετε ένα πλήρες απόσπασμα.

Δείτε επίσης