Δημιουργία πακέτων για το εργαλείο Package Deployer

Το Package Deployer επιτρέπει στους διαχειριστές να αναπτύξουν πακέτα σε παρουσίες του Microsoft Dataverse. Ένα πακέτο Package Deployer μπορεί να περιλαμβάνει οποιοδήποτε ή όλα εκ των παρακάτω:

  • Ένα ή περισσότερα αρχεία λύσης Dataverse.
  • Ενοποιημένα αρχεία ή αρχείο δεδομένων ρύθμισης παραμέτρων που έχει εξαχθεί από το Εργαλείο Μετεγκατάστασης Ρύθμισης Παραμέτρων. Για περισσότερες πληροφορίες σχετικά με το εργαλείο, δείτε Μεταφορά των δεδομένων ρύθμισης παραμέτρων σε παρουσίες και οργανισμούς με το Configuration Migration tool.
  • Προσαρμοσμένο κώδικα που μπορεί να εκτελείται πριν, κατά τη διάρκεια ή μετά την ανάπτυξη του πακέτου στην παρουσία Dataverse.
  • Περιεχόμενο HTML συγκεκριμένο για το πακέτο που μπορεί να εμφανίζεται στην αρχή και στο τέλος της διαδικασίας ανάπτυξης. Αυτό το περιεχόμενο μπορεί να είναι χρήσιμο για την παροχή μιας περιγραφής των λύσεων και των αρχείων που έχουν αναπτυχθεί στο πακέτο.

Σημείωμα

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

Προϋποθέσεις

  • Βεβαιωθείτε ότι έχετε έτοιμες όλα τα αρχεία και άλλα αρχεία που θέλετε να συμπεριλάβετε στο πακέτο.
  • Visual Studio 2019 ή μεταγενέστερη έκδοση ή Visual Studio Code.

Επισκόπηση διαδικασίας

Εκτελέστε τα ακόλουθα πέντε βήματα για να δημιουργήσετε ένα πακέτο Package Deployer.

  • Δημιουργήστε ένα έργο Visual Studio ή MSBuild
  • Προσθέστε λύσεις και άλλα αρχεία στο έργο
  • Ενημέρωση αρχείων HTML που παρέχονται (προαιρετικά)
  • Καθορισμός των τιμών ρύθμισης παραμέτρων για το πακέτο
  • Ορισμός προσαρμοσμένου κώδικα για το πακέτο
  • Δημιουργία και ανάπτυξη του πακέτου

Αυτά τα βήματα περιγράφονται αναλυτικά σε αυτό το άρθρο.

Δημιουργία έργου πακέτου

Το πρώτο βήμα είναι η δημιουργία ενός έργου Visual Studio ή MSBuild για το πακέτο. Για να το κάνετε αυτό, πρέπει να έχετε εγκαταστήσει στον υπολογιστή ανάπτυξης μία από τις δύο διαθέσιμες επεκτάσεις εργαλείων. Εάν χρησιμοποιείτε το Visual Studio Code, εγκαταστήστε το Microsoft Power Platform CLI. Διαφορετικά, εάν χρησιμοποιείτε το Visual Studio 2019, εγκαταστήστε τα Power Platform Tools για το Visual Studio. Η επέκταση Power Platform Tools είναι προς το παρόν διαθέσιμη μόνο για το Visual Studio 2019. Ωστόσο, το έργο που δημιουργήθηκε μπορεί να δημιουργηθεί χρησιμοποιώντας το Visual Studio 2019 ή μεταγενέστερη έκδοση.

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

Εκτελέστε την εντολή pac package init για να δημιουργήσετε το αρχικό πακέτο. Περισσότερες πληροφορίες: pac package

pac package init help
pac package init --outputDirectory DeploymentPackage

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

C:.
└───DeploymentPackage
    │   DeploymentPackage.csproj
    │   PackageImportExtension.cs
    │
    └───PkgAssets
            ImportConfig.xml
            manifest.ppkg.json

Στο έργο που δημιουργήθηκε, βρείτε το αρχείο διαμόρφωσης ImportConfig.xml στο φάκελο PkgAssets και το αρχείο PackageImportExtension.cs. Θα τροποποιήσετε αυτά τα αρχεία όπως περιγράφεται παρακάτω σε αυτό το άρθρο.

Προσθήκη αρχείων πακέτου

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

Όταν χρησιμοποιείτε το CLI, μπορείτε να προσθέσετε εξωτερικά πακέτα, λύσεις και αναφορές στο έργο πακέτου χρησιμοποιώντας μία από τις δευτερεύουσες εντολές προσθήκης. Πληκτρολογήστε pac package help για να δείτε τη λίστα των δευτερευουσών επαφών. Ας προσθέσουμε μια λύση στο πακέτο μας.

> pac package add-solution help

Commands:
Usage: pac package add-solution --path [--import-order] [--skip-validation] [--publish-workflows-activate-plugins] [--overwrite-unmanaged-customizations] [--import-mode] [--missing-dependency-behavior] [--dependency-overrides]

> cd .\DeploymentPackage\
> pac package add-solution --path ..\TestSolution_1_0_0_1_managed.zip

The item was added successfully.

Ρύθμιση παραμέτρων του πακέτου

  1. Καθορίστε τη ρύθμιση παραμέτρων του πακέτου προσθέτοντας πληροφορίες σχετικά με το πακέτο σας στο αρχείο ImportConfig.xml στο έργο. Ανοίξτε το αρχείο για επεξεργασία. Η παρακάτω λίστα παρέχει πληροφορίες σχετικά με κάθε παράμετρο και κόμβο στο αρχείο config.

    installsampledata
    True ή false. Εάν true, εγκαθιστά δείγματα δεδομένων στην παρουσία Dataverse. Αυτά τα δεδομένα είναι το ίδιο δείγμα δεδομένων το οποίο μπορείτε να εγκαταστήσετε από την περιοχή Ρυθμίσεις>Διαχείριση δεδομένων στο Dataverse.

    waitforsampledatatoinstall
    True ή false. Εάν η true και εάν το installsampledata έχει οριστεί επίσης σε true, αναμένει την εγκατάσταση του δείγματος δεδομένων πριν την ανάπτυξη του πακέτου.

    Σημείωμα

    Βεβαιωθείτε ότι έχετε ορίσει το installsampledata σε true εάν ρυθμίζετε το waitforsampledatatoinstall στην τιμή true.

    agentdesktopzipfile
    Όνομα αρχείου του αρχείου zip που θα αποσυμπιεστεί. Εάν καθορίσετε εδώ ένα όνομα αρχείου. zip, προσθέτει μια οθόνη κατά τη διάρκεια της διαδικασίας ανάπτυξης του πακέτου που σας ζητά να επιλέξετε μια θέση όπου θέλετε να αποσυμπιέσετε τα περιεχόμενα του αρχείου.

    Αυτό το χαρακτηριστικό χρησιμοποιείται συνήθως για τη δημιουργία πακέτων για το Unified Service Desk για το Dynamics 365. Για πληροφορίες σχετικά με το Unified Service Desk, δείτε τον Οδηγό διαχείρισης για το Unified Service Desk 3.0.

    agentdesktopexename
    Το όνομα του αρχείου. exe ή. msi που περιλαμβάνεται στο αρχείο zip ή σε μια διεύθυνση URL για επίκληση στο τέλος της διαδικασίας ανάπτυξης.

    Αυτό το χαρακτηριστικό χρησιμοποιείται συνήθως για τη δημιουργία πακέτων για το Unified Service Desk.

    crmmigdataimportfile
    Όνομα αρχείου του προεπιλεγμένου αρχείου δεδομένων ρύθμισης παραμέτρων (. zip) που έχει εξαχθεί με χρήση του Εργαλείου Μετεγκατάστασης Ρύθμισης Παραμέτρων.

    • Επίσης, μπορείτε να εισαγάγετε μια μεταφρασμένη έκδοση του αρχείου δεδομένων ρύθμισης παραμέτρων με βάση το αναγνωριστικό τοπικών ρυθμίσεων (LCID) που καθορίζεται με τη χρήση των νέων ρυθμίσεων χρόνου εκτέλεσης, κατά την εκτέλεση του Package Deployer. Χρησιμοποιήστε τον κόμβο <cmtdatafile> (που περιγράφεται παρακάτω) για να καθορίσετε τις μεταφρασμένες εκδόσεις του αρχείου δεδομένων ρύθμισης παραμέτρων σε ένα πακέτο και, στη συνέχεια, χρησιμοποιήστε τη μέθοδο OverrideConfigurationDataFileLanguage (που περιγράφεται παρακάτω) για να καθορίσετε τη λογική για την εισαγωγή του αρχείου δεδομένων ρύθμισης παραμέτρων με βάση το αναγνωριστικό τοπικών ρυθμίσεων που χρησιμοποιεί τις ρυθμίσεις χρόνου εκτέλεσης. Δεν μπορείτε να εισαγάγετε περισσότερα από ένα αρχεία δεδομένων ρύθμισης παραμέτρων χρησιμοποιώντας ένα πακέτο κάθε φορά.

    • Για το Dataverse (εσωτερικής εγκατάστασης), εάν το αρχείο δεδομένων ρύθμισης παραμέτρων περιέχει πληροφορίες χρήστη και οι δύο παρουσίες προέλευσης και προορισμού Dataverse βρίσκονται στον ίδιο Active Directory Domain, οι πληροφορίες χρήστη θα εισαχθούν στην παρουσία-στόχο Dataverse. Για να εισαγάγετε πληροφορίες χρήστη σε μια παρουσία (εσωτερικής εγκατάστασης) του Dataverse σε διαφορετικό τομέα, θα πρέπει να συμπεριλάβετε το αρχείο αντιστοίχισης χρήστη (.xml) που δημιουργείται χρησιμοποιώντας το Εργαλείο Μετεγκατάστασης Ρύθμισης Παραμέτρων στο έργο σας και να το καθορίσετε μαζί με το αρχείο δεδομένων ρύθμισης παραμέτρων χρησιμοποιώντας το χαρακτηριστικό usermapfilename στον κόμβο <cmtdatafile> που εξηγείται αργότερα. Οι πληροφορίες χρήστη δεν είναι δυνατό να εισαχθούν σε παρουσίες Dataverse.
      Κόμβος <solutions>
      Περιέχει έναν πίνακα κόμβων <configsolutionfile> που περιγράφει τις λύσεις που θα εισαχθούν. Η σειρά των λύσεων στο πλαίσιο αυτού του κόμβου υποδεικνύει τη σειρά με την οποία θα γίνει εισαγωγή των λύσεων στην παρουσία-στόχο Dataverse.

      Κόμβος <configsolutionfile>
      Χρησιμοποιήστε αυτόν τον κόμβο κάτω από τον κόμβο <solutions> για να καθορίσετε τις μεμονωμένες λύσεις και τις παρακάτω πληροφορίες για κάθε λύση που θα εισαχθεί:

    • solutionpackagefilename: Καθορίστε το όνομα του αρχείου. zip της λύσης σας. Υποχρεωτικό.

    • overwriteunmanagedcustomizations: Καθορίστε εάν θα αντικατασταθούν οι μη διαχειριζόμενες προσαρμογές κατά την εισαγωγή μιας λύσης η οποία υπάρχει ήδη στην παρουσία - στόχο του Dynamics 365. Αυτό το χαρακτηριστικό είναι προαιρετικό και εάν δεν καθορίσετε αυτό το χαρακτηριστικό, από προεπιλογή οι μη διαχειριζόμενες προσαρμογές στην υπάρχουσα λύση διατηρούνται στην παρουσία του στόχου Dynamics 365.

    • publishworkflowsandactivateplugins: Καθορίστε εάν θα δημοσιεύσετε ροές εργασιών και θα ενεργοποιηθούν οι προσθήκες στην παρουσία στόχο Dynamics 365 μετά την εισαγωγή της λύσης. Αυτό το χαρακτηριστικό είναι προαιρετικό και εάν δεν καθορίσετε αυτό το χαρακτηριστικό, από προεπιλογή οι ροές εργασιών δημοσιεύονται και οι προσθήκες ενεργοποιούνται μετά την εισαγωγή της λύσης στην παρουσία-στόχο Dynamics 365.

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

    
    <solutions>  
    <configsolutionfile solutionpackagefilename="SampleSolutionOne_1_0_managed.zip"  
    overwriteunmanagedcustomizations="false"  
    publishworkflowsandactivateplugins="true"/>  
    <configsolutionfile solutionpackagefilename="SampleSolutionTwo_1_0_managed.zip"  
    overwriteunmanagedcustomizations="false"  
    publishworkflowsandactivateplugins="true"/>  
    <configsolutionfile solutionpackagefilename="SampleSolutionThree_1_0_managed.zip" />  
    </solutions>  
    
    

    Κόμβος <filestoimport>
    Περιέχει έναν πίνακα κόμβων <configimportfile> και <zipimportdetails> που χρησιμοποιούνται για την περιγραφή μεμονωμένων αρχείων και αρχείων zip, αντίστοιχα, τα οποία θα εισαχθούν.

    Κόμβος <configimportfile>
    Χρησιμοποιήστε αυτόν τον κόμβο κάτω από τον κόμβο <configimportfile> για να περιγράψετε ένα αρχείο προς εισαγωγή στο Dataverse. Μπορείτε να προσθέσετε πολλά αρχεία σε ένα πακέτο προσθέτοντας τόσους κόμβους <configimportfile>.

    
    <filestoimport>  
    <configimportfile filename="File.csv"  
    filetype="CSV"  
    associatedmap="FileMap"  
    importtoentity="FileEntity"  
    datadelimiter=""  
    fielddelimiter="comma"  
    enableduplicatedetection="true"  
    isfirstrowheader="true"  
    isrecordownerateam="false"  
    owneruser=""  
    waitforimporttocomplete="true" />  
    <configimportfile filename="File.zip"  
    filetype="ZIP"  
    associatedmap="FileMapName"  
    importtoentity="FileEntity"  
    datadelimiter=""  
    fielddelimiter="comma"  
    enableduplicatedetection="true"  
    isfirstrowheader="true"  
    isrecordownerateam="false"  
    owneruser=""  
    waitforimporttocomplete="true"/>  
    
    </filestoimport>  
    
    

    Ακολουθεί μια λίστα με υποστηριζόμενα χαρακτηριστικά:

    Χαρακτηριστικό Description
    filename Όνομα του αρχείου που περιέχει τα δεδομένα εισαγωγής. Εάν το αρχείο είναι αρχείο. zip, θα πρέπει να υπάρχει ένας κόμβος <zipimportdetails> με έναν κόμβο <zipimportdetail> για κάθε αρχείο στο αρχείο. zip.
    filetype Αυτή η τιμή μπορεί να είναι csv, xml ή zip.
    associatedmap Το όνομα της αντιστοίχισης δεδομένων εισαγωγής Dataverse που θα χρησιμοποιηθεί με αυτό το αρχείο. Εάν είναι κενό, επιχειρεί να χρησιμοποιήσει το όνομα αντιστοίχισης δεδομένων εισαγωγής που καθορίζεται από το σύστημα για αυτό το αρχείο.
    importtoentity Μπορεί να είναι το όνομα του αρχείου exe που περιλαμβάνεται στο αρχείο zip ή ένα αρχείο .msi για την παροχή μιας σύνδεσης για επίκληση στο τέλος της διαδικασίας.
    datadelimiter Όνομα του οριοθέτη δεδομένων που χρησιμοποιείται στο αρχείο εισαγωγής. Οι έγκυρες τιμές είναι μονά ή διπλά εισαγωγικά.
    fielddelimiter Όνομα του οριοθέτη πεδίου που χρησιμοποιείται στο αρχείο εισαγωγής. Οι έγκυρες τιμές είναι κόμμα ή άνω και κάτω τελεία ή μονό εισαγωγικό.
    enableduplicatedetection Υποδεικνύει εάν έχουν ενεργοποιηθεί οι κανόνες εντοπισμών διπλοτύπων κατά την εισαγωγή δεδομένων. Οι έγκυρες τιμές είναι true ή false.
    isfirstrowheader Χρησιμοποιείται για να υποδηλώσει ότι η πρώτη γραμμή του αρχείου εισαγωγής περιέχει τα ονόματα πεδίων. Οι έγκυρες τιμές είναι true ή false.
    isrecordownerateam Υποδεικνύει εάν ο κάτοχος της καρτέλας κατά την εισαγωγή θα πρέπει να είναι μια ομάδα. Οι έγκυρες τιμές είναι true ή false.
    owneruser Υποδεικνύει το αναγνωριστικό χρήστη που θα πρέπει να κατέχει τις καρτέλες. Η προεπιλεγμένη τιμή είναι ο χρήστης που είναι συνδεδεμένος τη δεδομένη στιγμή.
    waitforimporttocomplete Εάν true, το σύστημα αναμένει την ολοκλήρωση της εισαγωγής πριν προχωρήσει. Εάν false, τοποθετεί σε ουρά τις εργασίες και συνεχίζει.

    Κόμβος <zipimportdetails>
    Αυτός ο κόμβος περιέχει έναν πίνακα κόμβων <zipimportdetail> που περιγράφουν τα αρχεία που περιλαμβάνονται σε ένα αρχείο zip που χρησιμοποιείται για την εισαγωγή στο Dynamics 365.

    Κόμβος <zipimportdetail>
    Χρησιμοποιήστε αυτόν τον κόμβο κάτω από τον κόμβο <zipimportdetails> για να παράσχετε πληροφορίες σχετικά με ένα μεμονωμένο αρχείο σε ένα αρχείο. zip που καθορίζεται στον κόμβο <configimportfile>.

    <filestoimport>  
    ...  
    ...  
    <zipimportdetails>  
    <zipimportdetail filename="subfile1.csv" filetype="csv" importtoentity="account" />  
    <zipimportdetail filename="subfile2.csv" filetype="csv" importtoentity="contact" />  
    </zipimportdetails>  
    </filestoimport>  
    
    

    Υποστηριζόμενα χαρακτηριστικά παρατίθενται παρακάτω:

    Χαρακτηριστικό Description
    filename Όνομα του αρχείου που περιέχει τα δεδομένα εισαγωγής.
    filetype Αυτή η τιμή μπορεί να είναι csv ή xml.
    importtoentity Μπορεί να είναι το όνομα του αρχείου exe που περιλαμβάνεται στο αρχείο zip ή μια διεύθυνση url ή ένα αρχείο .msi για την παροχή μιας σύνδεσης για επίκληση στο τέλος της διαδικασίας.

    Κόμβος <filesmapstoimport>
    Αυτός ο κόμβος περιέχει έναν πίνακα κόμβων <configmapimportfile> προς εισαγωγή. Η σειρά των αρχείων αντιστοίχισης σε αυτόν τον κόμβο υποδεικνύει τη σειρά με την οποία εισάγονται. Για πληροφορίες σχετικά με τις αντιστοιχίσεις δεδομένων, ανατρέξτε στο θέμα Δημιουργία αντιστοιχίσεων δεδομένων για εισαγωγή.

    Κόμβος <configimportmapfile>
    Χρησιμοποιήστε αυτόν τον κόμβο κάτω από τον κόμβο <filesmapstoimport> για να παράσχετε πληροφορίες σχετικά με ένα μεμονωμένο αρχείο αντιστοίχισης που θα εισαχθεί στο Dataverse.

    <filesmapstoimport>  
    <configimportmapfile filename="FileMap.xml" />  
    </filesmapstoimport>  
    

    Κόμβος <cmtdatafiles>
    Αυτός ο κόμβος περιέχει έναν πίνακα κόμβων <cmtdatafile> που περιέχει μεταφρασμένη έκδοση του αρχείου δεδομένων ρύθμισης παραμέτρων που πρόκειται να εισαχθεί.

    Κόμβος <cmtdatafile>
    Χρησιμοποιήστε αυτόν τον κόμβο κάτω από τον κόμβο <cmtdatafiles> για να καθορίσετε τα δεδομένα μεταφρασμένης ρύθμισης παραμέτρων μαζί με το αναγνωριστικό τοπικών ρυθμίσεων (απαιτείται) και το αρχείο αντιστοίχισης πληροφοριών χρήστη (προαιρετικό). Για παράδειγμα:

    <cmtdatafiles>  
    <cmtdatafile filename="data_1033.zip" lcid="1033" usermapfilename="UserMap.xml" />  
    <cmtdatafile filename="data_1041.zip" lcid="1041" usermapfilename="" />  
    </cmtdatafiles>  
    

    Μπορείτε να καθορίσετε την προσαρμοσμένη λογική σας στη μέθοδο OverrideConfigurationDataFileLanguage (η οποία εξηγείται παρακάτω) για την εισαγωγή ενός μεταφρασμένου αρχείου δεδομένων ρύθμισης παραμέτρων αντί του προεπιλεγμένου (καθορίζεται στο crmmigdataimportfile) με βάση την τιμή αναγνωριστικού τοπικών ρυθμίσεων (LCID) που καθορίζεται με χρήση των ρυθμίσεων χρόνου εκτέλεσης (οι οποίες εξηγούνται παρακάτω).

  2. Επιλέξτε Αποθήκευση όλων.

    Τα παρακάτω xml αναπαριστά τα περιεχόμενα ενός αρχείου δείγματος ImportConfig.xml.

    <?xml version="1.0" encoding="utf-16"?>  
    <configdatastorage xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance"  
    xmlns:xsd="https://www.w3.org/2001/XMLSchema"  
    installsampledata="true"  
    waitforsampledatatoinstall="true"  
    agentdesktopzipfile=""  
    agentdesktopexename=""  
    crmmigdataimportfile="data_1033.zip">  
    <solutions>  
    <configsolutionfile solutionpackagefilename="SampleSolutionOne_1_0_managed.zip"  
    overwriteunmanagedcustomizations="false"  
    publishworkflowsandactivateplugins="true"/>  
    <configsolutionfile solutionpackagefilename="SampleSolutionTwo_1_0_managed.zip"  
    overwriteunmanagedcustomizations="false"  
    publishworkflowsandactivateplugins="true"/>  
    <configsolutionfile solutionpackagefilename="SampleSolutionThree_1_0_managed.zip" />  
    </solutions>  
    <filestoimport>  
    <configimportfile filename="SampleOption.csv"  
    filetype="CSV"  
    associatedmap="SampleOption"  
    importtoentity="sample_option"  
    datadelimiter=""  
    fielddelimiter="comma"  
    enableduplicatedetection="true"  
    isfirstrowheader="true"  
    isrecordownerateam="false"  
    owneruser=""  
    waitforimporttocomplete="false"/>  
    <configimportfile filename="File.zip"  
    filetype="ZIP"  
    associatedmap="FileMapName"  
    importtoentity="FileEntity"  
    datadelimiter=""  
    fielddelimiter="comma"  
    enableduplicatedetection="true"  
    isfirstrowheader="true"  
    isrecordownerateam="false"  
    owneruser=""  
    waitforimporttocomplete="true"/>  
    <zipimportdetails>  
    <zipimportdetail filename="subfile1.csv"  
    filetype="csv"  
    importtoentity="account" />  
    <zipimportdetail filename="subfile2.csv"  
    filetype="csv"  
    importtoentity="contact" />  
    </zipimportdetails>  
    </filestoimport>  
    <filesmapstoimport>  
    <configimportmapfile filename="SampleOption.xml" />  
    </filesmapstoimport>  
    <cmtdatafiles>  
    <cmtdatafile filename="data_1033.zip"  
    lcid="1033"  
    usermapfilename="UserMap.xml" />  
    <cmtdatafile filename="data_1041.zip"  
    lcid="1041"  
    usermapfilename="" />  
    </cmtdatafiles>  
    </configdatastorage>  
    
    

Προσθέστε προσαρμοσμένο κώδικα

Μπορείτε να προσθέσετε προσαρμοσμένο κώδικα που εκτελείται πριν, κατά τη διάρκεια και μετά την εισαγωγή του πακέτου σε ένα περιβάλλον. Για να το κάνετε αυτό, ακολουθήστε αυτές τις οδηγίες.

  1. Επεξεργαστείτε το PackageTemplate.csPackageImportExtension.cs) στον ριζικό φάκελο του έργου.

  2. Στο αρχείο C#, μπορείτε να κάνετε τα εξής:

    1. Καταγράψτε τον προσαρμοσμένο κώδικα που θα εκτελεστεί κατά την προετοιμασία του πακέτου στον ορισμό μεθόδου παράκαμψης του InitializeCustomExtension.

      Αυτή η μέθοδος μπορεί να χρησιμοποιηθεί για να επιτρέψετε στους χρήστες να χρησιμοποιούν τις παραμέτρους χρόνου εκτέλεσης κατά την εκτέλεση ενός πακέτου. Ως προγραμματιστής, μπορείτε να προσθέσετε υποστήριξη για οποιαδήποτε παράμετρο χρόνου εκτέλεσης στο πακέτο σας, χρησιμοποιώντας την ιδιότητα RuntimeSettings εφόσον έχετε κώδικα για να την επεξεργαστείτε με βάση τα δεδομένα που εισάγονται από το χρήστη.

      Για παράδειγμα, το ακόλουθο δείγμα κώδικα ενεργοποιεί μια παράμετρο χρόνου εκτέλεσης που καλείται SkipChecks για το πακέτο, η οποία έχει δύο πιθανές τιμές: true ή false. Το δείγμα κώδικα ελέγχει εάν ο χρήστης έχει καθορίσει τις παραμέτρους χρόνου εκτέλεσης κατά την εκτέλεση Package Deployer (είτε χρησιμοποιώντας τη γραμμή εντολών είτε το PowerShell) και, στη συνέχεια, επεξεργάζεται τις πληροφορίες. Εάν δεν καθορίζεται καμία παράμετρος χρόνου εκτέλεσης από το χρήστη κατά την εκτέλεση του πακέτου, η τιμή της ιδιότητας RuntimeSettings θα είναι null.

      public override void InitializeCustomExtension()  
      {  
      // Do nothing.  
      
      // Validate the state of the runtime settings object.  
      if (RuntimeSettings != null)  
      {  
      PackageLog.Log(string.Format("Runtime Settings populated.  Count = {0}", RuntimeSettings.Count));  
      foreach (var setting in RuntimeSettings)  
      {  
      PackageLog.Log(string.Format("Key={0} | Value={1}", setting.Key, setting.Value.ToString()));  
      }  
      
      // Check to see if skip checks is present.  
      if ( RuntimeSettings.ContainsKey("SkipChecks") )  
      {  
      bool bSkipChecks = false;  
      if (bool.TryParse((string)RuntimeSettings["SkipChecks"], out bSkipChecks))  
      OverrideDataImportSafetyChecks = bSkipChecks;  
      }  
      }  
      else  
      PackageLog.Log("Runtime Settings not populated");  
      }  
      

      Αυτός ο κώδικας επιτρέπει στον διαχειριστή να χρησιμοποιεί τη γραμμή εντολών ή το cmdlet Import-CrmPackage για να καθορίσει εάν θα παραλείψετε τους ελέγχους ασφαλείας κατά την εκτέλεση του εργαλείου Package Deployer για την εισαγωγή του πακέτου. Περισσότερες πληροφορίες: Ανάπτυξη πακέτων με χρήση των Package Deployer και Windows PowerShell

    2. Εισαγάγετε προσαρμοσμένο κώδικα για εκτέλεση πριν εισαχθούν οι λύσεις στον ορισμό μεθόδου παράκαμψης του PreSolutionImport για να καθορίσετε εάν θα διατηρούνται ή θα αντικαθίστανται οι προσαρμογές κατά την ενημέρωση της καθορισμένης λύσης σε μια παρουσία προορισμού Dataverse και εάν θα ενεργοποιούνται αυτόματα οι προσθήκες και οι ροές εργασιών.

    3. Χρήση του ορισμού μεθόδου παράκαμψης RunSolutionUpgradeMigrationStep για την εκτέλεση μετασχηματισμού δεδομένων ή την αναβάθμιση μεταξύ δύο εκδόσεων μιας λύσης. Αυτή η μέθοδος καλείται μόνο εάν η λύση που εισάγετε υπάρχει ήδη στην παρουσία του προορισμού Dataverse.

      Αυτή η συνάρτηση αναμένει τις παρακάτω παραμέτρους:

      Παράμετρος Περιγραφή
      solutionName Όνομα της λύσης
      oldVersion Αριθμός έκδοσης της παλαιάς λύσης
      newVersion Αριθμός έκδοσης της νέας λύσης
      oldSolutionId GUID της παλαιάς λύσης.
      newSolutionId GUID της νέας λύσης.
    4. Καταγράψτε τον προσαρμοσμένο κώδικα που θα εκτελεστεί πριν την ολοκλήρωση της εισαγωγής της λύσης στον ορισμό μεθόδου παράκαμψης της μεθόδου BeforeImportStage. Τα δείγματα δεδομένων και ορισμένα απλά αρχεία για τις λύσεις που καθορίζονται στο αρχείο ImportConfig.xml εισάγονται πριν ολοκληρωθεί η εισαγωγή της λύσης.

    5. Παράκαμψη της τρέχουσας επιλεγμένης γλώσσας για την εισαγωγή δεδομένων ρύθμισης παραμέτρων με χρήση του ορισμού μεθόδου παράκαμψης του OverrideConfigurationDataFileLanguage. Εάν το καθορισμένο αναγνωριστικό τοπικών ρυθμίσεων (LCID) της καθορισμένης γλώσσας δεν βρίσκεται στη λίστα με τις διαθέσιμες γλώσσες στο πακέτο, εισάγεται το προεπιλεγμένο αρχείο δεδομένων.

      Καθορίζετε τις διαθέσιμες γλώσσες για τα δεδομένα ρύθμισης παραμέτρων στον κόμβο <cmtdatafiles> στο αρχείο ImportConfig.xml. Το προεπιλεγμένο αρχείο εισαγωγής δεδομένων ρύθμισης παραμέτρων καθορίζεται στο χαρακτηριστικό crmmigdataimportfile στο αρχείο ImportConfig.xml.

      Η παράβλεψη των ελέγχων δεδομένων (OverrideDataImportSafetyChecks = true) μπορεί να είναι αποτελεσματική εδώ, εάν είστε βέβαιοι ότι η παρουσία του προορισμού Dataverse δεν περιέχει δεδομένα.

    6. Καταγράψτε τον προσαρμοσμένο κώδικα που θα εκτελεστεί μετά την ολοκλήρωση της εισαγωγής της λύσης στον ορισμό μεθόδου παράκαμψης της μεθόδου AfterPrimaryImport>. Τα υπόλοιπα απλά αρχεία που δεν είχαν εισαχθεί νωρίτερα, προτού ξεκινήσει η εισαγωγή της λύσης, εισάγονται τώρα.

    7. Αλλάξτε το προεπιλεγμένο όνομα του φακέλου πακέτου στο όνομα του πακέτου που θέλετε. Για να το κάνετε αυτό, μετονομάστε τον φάκελο PkgFolderPkgAssets) στο τμήμα παραθύρου Εξερεύνηση λύσεων και, στη συνέχεια, επεξεργαστείτε την τιμή επιστροφής που βρίσκεται κάτω από την ιδιότητα GetImportPackageDataFolderName.

      public override string GetImportPackageDataFolderName  
      {  
      get  
      {  
      // WARNING this value directly correlates to the folder name in the Solution Explorer where the ImportConfig.xml and sub content is located.  
      // Changing this name requires that you also change the correlating name in the Solution Explorer  
      return "PkgFolder";  
      }  
      }  
      
    8. Αλλάξτε το όνομα του πακέτου με την επεξεργασία της τιμής επιστροφής στην ιδιότητα GetNameOfImport.

      public override string GetNameOfImport(bool plural)  
      {  
      return "Package Short Name";  
      }  
      

      Αυτή η επιστρεφόμενη τιμή είναι το όνομα του πακέτου σας που εμφανίζεται στη σελίδα επιλογής πακέτου στον Οδηγό του Dynamics 365 Package Deployer.

    9. Αλλάξτε την περιγραφή του πακέτου με την επεξεργασία της τιμής επιστροφής στην ιδιότητα GetImportPackageDescriptionText.

      
      public override string GetImportPackageDescriptionText  
      {  
      get { return "Package Description"; }  
      }  
      
      

      Αυτή η επιστρεφόμενη τιμή είναι η περιγραφή του πακέτου που εμφανίζεται μαζί με το όνομα του πακέτου στη σελίδα επιλογής πακέτου στον Οδηγό Package Deployer.

    10. Αλλάξτε το μεγάλο όνομα του πακέτου με την επεξεργασία της τιμής επιστροφής στην ιδιότητα GetLongNameOfImport.

      
      public override string GetLongNameOfImport  
      {  
      get { return "Package Long Name"; }  
      }  
      
      

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

  3. Επιπλέον, οι παρακάτω συναρτήσεις και μεταβλητές είναι διαθέσιμες στο πακέτο:

    Ονομασία Τύπος Περιγραφή
    CreateProgressItem(String) Function Χρησιμοποιείται για τη δημιουργία ενός νέου στοιχείου προόδου στο περιβάλλον εργασίας χρήστη (UI).
    RaiseUpdateEvent(String, ProgressPanelItemStatus) Function Χρησιμοποιείται για την ενημέρωση της προόδου που έχει δημιουργηθεί από την κλήση στο CreateProgressItem(String).

    Το ProgressPanelItemStatus είναι μια απαρίθμηση με τις ακόλουθες τιμές:

    Σε εξέλιξη = 0
    Πλήρες = 1
    Απέτυχε = 2
    Προειδοποίηση = 3
    Άγνωστο = 4
    RaiseFailEvent(String, Exception) Function Χρησιμοποιείται για την αποτυχία της εισαγωγής της τρέχουσας κατάστασης με ένα μήνυμα εξαίρεσης.
    IsRoleAssoicatedWithTeam(Guid, Guid) Function Χρησιμοποιείται για να προσδιορίσει εάν ένας ρόλος συσχετίζεται με μια συγκεκριμένη ομάδα.
    IsWorkflowActive(Guid) Function Χρησιμοποιείται για να προσδιοριστεί εάν μια συγκεκριμένη ροή εργασιών είναι ενεργή.
    PackageLog Δείκτης κλάσης Ένας δείκτη προς το προετοιμασμένο περιβάλλον εργασίας χρήστη καταγραφής για το πακέτο. Αυτό το περιβάλλον εργασίας χρήστη χρησιμοποιείται από ένα πακέτο για την καταγραφή μηνυμάτων και εξαιρέσεων στο αρχείο καταγραφής του πακέτου.
    RootControlDispatcher Ιδιότητα Ένα περιβάλλον εργασίας χρήστη αποστολέα που χρησιμοποιείται για να επιτρέπεται στο στοιχείο ελέγχου σας να αποδίδει το δικό το περιβάλλον εργασίας χρήστη κατά την ανάπτυξη του πακέτου. Χρησιμοποιήστε αυτό το περιβάλλον εργασίας για να συσκευάσετε τυχόν στοιχεία ή εντολές του περιβάλλοντος εργασίας. Είναι σημαντικό να ελέγχετε αυτή τη μεταβλητή για τιμές null πριν τη χρησιμοποιήσετε, καθώς ενδέχεται να μην έχει οριστεί κάποια τιμή.
    CrmSvc Ιδιότητα Ένας δείκτης προς μια κλάση CrmServiceClient που επιτρέπει σε ένα πακέτο την αντιμετώπιση του Dynamics 365 μέσα από το πακέτο. Χρησιμοποιήστε αυτόν τον δείκτη για να εκτελέσετε μεθόδους SDK και άλλες ενέργειες στις μεθόδους που έχουν παρακαμφθεί.
    DataImportBypass Ιδιότητα Καθορίστε εάν το Dynamics 365 Package Deployer παρακάμπτει όλες τις λειτουργίες εισαγωγής δεδομένων, όπως η εισαγωγή δειγμάτων δεδομένων Dataverse, δεδομένων απλών αρχείων και δεδομένων που έχουν εξαχθεί από το Configuration Migration Tool. Προσδιορίστε true ή false. Η προεπιλογή είναι false.
    OverrideDataImportSafetyChecks Ιδιότητα Καθορίστε εάν το Dynamics 365 Package Deployer θα παρακάμπτει ορισμένους ελέγχους ασφαλείας του, γεγονός που συμβάλλει στη βελτίωση της απόδοσης της εισαγωγής. Προσδιορίστε true ή false. Η προεπιλογή είναι false.

    Θα πρέπει να ορίσετε αυτήν την ιδιότητα σε true μόνο εάν η παρουσία προορισμού Dataverse δεν περιέχει δεδομένα.
  4. Αποθηκεύστε το έργο σας. Το επόμενο βήμα είναι η δημιουργία του πακέτου.

Δημιουργία και ανάπτυξη

Οι ακόλουθες ενότητες περιγράφουν τον τρόπο δημιουργίας και ανάπτυξης ενός πακέτου.

Δόμηση

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

Για να δημιουργήσετε ένα πακέτο που δημιουργήθηκε με το CLI, θα μπορούσατε να φορτώσετε το αρχείο .csproj στο Visual Studio, αλλά αντ' αυτού θα χρησιμοποιήσουμε την εντολή dotnet και το MSBuild. Στο παρακάτω παράδειγμα θεωρείται ότι ο κατάλογος εργασίας περιέχει το αρχείο *.csproj.

> dotnet publish

DeploymentPackage -> C:\Users\peter\Downloads\DeploymentPackage\bin\Debug\DeploymentPackage.1.0.0.pdpkg.zip

Μπορείτε, προαιρετικά, να δείτε τις λεπτομέρειες του ενσωματωμένου πακέτου.

> pac package show --package .\bin\Debug\DeploymentPackage.1.0.0.pdpkg.zip

Το πακέτο σας απαρτίζεται από τα ακόλουθα αρχεία στο φάκελο <Project>\Bin\Debug.

  • Φάκελος <PackageName>: Το όνομα του φακέλου είναι το ίδιο με αυτό που αλλάξατε για το όνομα του φακέλου του πακέτου σας στο βήμα 2.g αυτής της ενότητας Προσθήκη προσαρμοσμένου κώδικα. Αυτός ο φάκελος περιέχει όλες τις λύσεις, δεδομένα ρύθμισης παραμέτρων, απλά αρχεία και τα περιεχόμενα για το πακέτο σας.

Σημείωμα

Ενδέχεται να δείτε ένα φάκελο .NET (π.χ. net472) που να περιέχει έναν φάκελο δημοσίευσης. Το DLL και άλλα αρχεία έργου βρίσκονται σε αυτόν το φάκελο δημοσίευσης.

  • <PackageName>dll: Η συγκρότηση περιέχει τον προσαρμοσμένο κώδικα για το πακέτο σας. Από προεπιλογή, το όνομα της συγκρότησης είναι το ίδιο με το όνομα του έργου.

Ανάπτυξη

Αφού δημιουργήσετε ένα πακέτο, μπορείτε να το αναπτύξετε στην παρουσία του Dataverse χρησιμοποιώντας το εργαλείο Package Deployer, το Windows PowerShell ή μια εντολή CLI.

  • Για να αναπτύξετε χρησιμοποιώντας το εργαλείο Package Deployer, κάντε πρώτα λήψη του εργαλείου όπως περιγράφεται στα εργαλεία ανάπτυξης του Dataverse. Στη συνέχεια, ακολουθήστε τις λεπτομερείς πληροφορίες σχετικά με την ανάπτυξη πακέτων στο άρθρο Ανάπτυξη πακέτων με χρήση Package Deployer ή Windows PowerShell.

  • Για να αναπτύξετε χρησιμοποιώντας το CLI, χρησιμοποιήστε την εντολή pac package deploy.

    > pac package deploy --package .\bin\Debug\DeploymentPackage.1.0.0.pdpkg.zip
    

    Σημείωμα

    Για να αναπτύξετε ένα πακέτο σε περιβάλλον προορισμού χρησιμοποιώντας το CLI, πρέπει πρώτα να ρυθμίσετε ένα προφίλ ελέγχου ταυτότητας και να επιλέξετε έναν οργανισμό. Περισσότερες πληροφορίες: pac auth create, pac org select

Βέλτιστες πρακτικές

Παρακάτω παρατίθενται μερικές βέλτιστες συμβουλές πρακτικής που μπορείτε να ακολουθήσετε κατά την εργασία με πακέτα Package Deployer.

Δημιουργία πακέτων

Κατά τη δημιουργία πακέτων, οι προγραμματιστές πρέπει:

  • Βεβαιωθείτε ότι οι συγκροτήσεις πακέτων είναι υπογεγραμμένες.

Ανάπτυξη πακέτων

Όταν αναπτύσσουν πακέτα, οι διαχειριστές του Dataverse πρέπει να:

  • Επιμείνετε σε συγκροτήσεις υπογεγραμμένων πακέτων ώστε να μπορείτε να παρακολουθήσετε τη συγκρότηση έως την πηγή της.
  • Ελέγχουν το πακέτο σε μια παρουσία προ-παραγωγής κατά προτίμηση, σε ένα είδωλο κατοπτρισμού της παρουσίας παραγωγής, πριν από την εκτέλεσή του σε μια παρουσία παραγωγής.
  • Δημιουργήστε αντίγραφα της παρουσίας παραγωγής πριν από την ανάπτυξη του πακέτου.

Δείτε επίσης

Εργαλείο δημιουργίας πακέτου λύσεων