Crearea de pachete pentru instrumentul Package Deployer
Package Deployer permite administratorilor să implementeze pachete pe instanțe Microsoft Dataverse. Un pachet Package Deployer poate consta în următoarele elemente:
- Unul sau mai multe fișiere soluție Dataverse.
- Fișiere plate sau fișiere de date de configurare din instrumentul Migrare configurare. Pentru informații suplimentare despre instrument, consultați Mutați date de configurare în instanțe și organizații cu instrumentul Migrare configurare.
- Codul particularizat care poate rula înaintea, în timpul, sau după ce pachetul este implementat în instanța Dataverse.
- Conținutul HTML specific pachetului care se poate afișa la începutul și la sfârșitul procesului de implementare. Acest conținut poate fi util pentru a furniza o descriere a soluțiilor și fișierelor implementate în pachet.
Notă
Există un alt tip de pachet numit pachet de inserturi. Acest tip de pachet este pentru ansambluri dependente de inserturi și nu are nicio relație cu pachetele Package Deployer.
Cerințe preliminare
- Asigurați-vă că aveți toate soluțiile și alte fișiere pregătite pe care doriți să le includeți în pachet.
- Visual Studio 2019 sau o versiune ulterioară sau Visual Studio Cod.
Prezentare generală a procesului
Pentru a crea un Package Deployer pachet, efectuați următorii pași.
- Creați un proiect Visual Studio sau MSBuild
- Adăugați soluții și alte fișiere la proiect
- Actualizați fișierele HTML furnizate (opțional)
- Specificați valorile de configurare pentru pachet
- Definiți codul personalizat pentru pachet
- Construiți și implementați pachetul
Acești pași sunt descriși în detaliu în acest articol.
Crearea unui proiect de pachet
Primul pas este să creați un proiect Visual Studio sau MSBuild pentru pachet. Pentru a face acest lucru, trebuie să aveți una dintre cele două extensii de instrumente disponibile instalată pe computerul de dezvoltare. Dacă utilizați Visual Studio Code, instalați CLI Microsoft Power Platform. În caz contrar, dacă utilizați Visual Studio 2019, instalați Power Platform tools pentru Visual Studio. Extensia de Power Platform instrumente este disponibilă în prezent numai pentru Visual Studio 2019. Cu toate acestea, proiectul creat poate fi construit folosind Visual Studio 2019 sau o versiune ulterioară.
Selectați fila corespunzătoare de mai jos pentru a afla cum să creați un proiect folosind extensia de instrumente dorită. Ambele instrumente produc proiectul într-un format similar.
Rulați comanda pac package init pentru a crea pachetul inițial. Mai multe informații: pachet pac
pac package init help
pac package init --outputDirectory DeploymentPackage
Ieșirea CLI rezultată conține dosarele și fișierele prezentate mai jos. Numele dosarului „DeploymentPackage” a fost folosit aici ca exemplu.
C:.
└───DeploymentPackage
│ DeploymentPackage.csproj
│ PackageImportExtension.cs
│
└───PkgAssets
ImportConfig.xml
manifest.ppkg.json
În proiectul creat, găsiți fișierul de configurare ImportConfig.xml în folderul PkgAssets și fișierul PackageImportExtension.cs. Veți modifica aceste fișiere așa cum este descris mai jos în acest articol.
Adăugarea de fișiere unui pachet
După ce ați creat un proiect de pachet, puteți începe să adăugați soluții și alte fișiere la acel proiect.
Când utilizați CLI, puteți adăuga pachete externe, soluții și referințe la proiectul dvs. de pachet folosind una dintre subcomenzile adăugare. Introduceți pac package help
pentru a vedea lista subcomenzilor. Să adăugăm o soluție la pachetul nostru.
> 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.
Configurarea pachetului
Definiți configurația pachetului adăugând informații despre pachetul dvs. în fișierul ImportConfig.xml din proiect. Deschideți fișierul pentru editare. Următoarea listă oferă informații despre fiecare parametru și nod din fișierul de configurare.
installsampledata
True
saufalse
. Dacătrue
, instalează datele de eșantion în instanța Dataverse. Aceste date sunt aceleași date de eșantion pe care le puteți instala din zona Setări>Gestionarea datelor în Dataverse.waitforsampledatatoinstall
Adevărat sau fals. Dacă adevărat și dacă installsampledata este, de asemenea, setat pe adevărat, așteaptă instalarea datelor de eșantion înainte de a implementa pachetul.Notă
Asigurați-vă că ați setat installsampledata la adevărat dacă setați
waitforsampledatatoinstall
la adevărat.agentdesktopzipfile
Numele fișierului fișierului zip de dezarhivat. Dacă specificați aici un nume de fișier .zip, acesta adaugă un ecran în timpul procesului de implementare a pachetelor care vă solicită să selectați o locație în care doriți să dezarhivați conținuturile fișierului.Acest atribut este utilizat în mod obișnuit pentru crearea de pachete pentru Unified Service Desk pentru Dynamics 365. Pentru informații despre Unified Service Desk, consultați Ghid de administrare pentru Unified Service Desk 3.0.
agentdesktopexename
Numele fișierului .exe sau .msi din fișierul zip sau a unei adrese URL care trebuie invocată la sfârșitul procesului de implementare.Acest atribut este utilizat în mod obișnuit pentru crearea de pachete pentru Unified Service Desk.
crmmigdataimportfile
Numele fișierului fișierului de date implicit de configurare (.zip) exportat folosind instrumentul Migrare configurare.Puteți importa, de asemenea, o versiune localizată a fișierului de date de configurare bazat pe ID-ul local (LCID) specificat folosind setări noi de execuție în timpul rulării Package Deployer. Utilizați nodul
<cmtdatafile>
(explicat mai târziu) pentru a specifica versiunile localizate ale fișierului de date de configurare dintr-un pachet și apoi utilizați metodaOverrideConfigurationDataFileLanguage
(explicată mai târziu) pentru a specifica logica pentru importul fișierului de date de configurare bazat pe ID-ul local specificat cu setările de execuție. Nu puteți importa mai mult de un fișier de date de configurare utilizând un pachet simultan.Pentru Dataverse (local), dacă fișierul de date de configurare conține informații despre utilizator și ambele instanțe sursă și țintă se află pe același domeniu Active Directory, informațiile despre utilizator sunt importate în instanța țintă Dataverse Dataverse . Pentru a importa informațiile utilizatorului la instanța Dataverse (local) pe un domeniu diferit, trebuie să includeți fișierul hartă utilizator (.xml) generat folosind instrumentul Migrare configurare din proiectul dvs. și să îl specificați împreună cu fișierul de date de configurare folosind atributul
usermapfilename
în nodul<cmtdatafile>
explicat mai târziu. Informațiile despre utilizator nu pot fi importate în Dataverse instanțe.
<solutions>
nod
Conține o serie de noduri<configsolutionfile>
care descriu soluțiile de importat. Ordinea soluțiilor din acest nod indică ordinea în care soluțiile vor fi importate pe instanța țintă Dataverse.<configsolutionfile>
nod
Utilizați acest nod sub nodul<solutions>
pentru a specifica soluțiile individuale și următoarele informații pentru fiecare soluție care trebuie importată:solutionpackagefilename
: Specificați numele fișierului .zip al soluției dvs. Necesaroverwriteunmanagedcustomizations
: Specificați dacă să suprascrieți orice particularizări neadministrate atunci când importați o soluție care există deja în instanța Dynamics 365 țintă. Acest atribut este opțional și, dacă nu specificați acest atribut, în mod implicit, particularizările negestionate din soluția existentă sunt menținute în instanța Dynamics 365 țintă.publishworkflowsandactivateplugins
: Specificați dacă doriți să publicați fluxuri de lucru și să activați inserturile în instanța Dynamics 365 țintă după importarea soluției. Acest atribut este opțional și, dacă nu specificați nu specificați acest atribut, în mod implicit fluxurile de lucru sunt publicate și inserturile sunt activate după ce soluția este importată în instanța Dynamics 365 țintă.Puteți adăuga mai multe nume de fișiere cu soluție într-un pachet adăugând cât mai multe noduri
<configsolutionfile>
. De exemplu, dacă doriți să fie importate trei fișiere cu soluție, adăugați-le după cum este indicat mai jos:
<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>
nod
Conține o serie de<configimportfile>
și noduri<zipimportdetails>
care sunt utilizate pentru a descrie fișiere individuale și respectiv fișiere zip pentru a fi importate.<configimportfile>
nod
Utilizați acest nod în sub nodul<configimportfile>
pentru a descrie un fișier în care să fie importat în Dataverse. Puteți adăuga mai multe fișiere într-un pachet adăugând cât mai multe noduri<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>
Mai jos se află o listă de atribute acceptate:
Atribut Descriere filename
Numele fișierului care conține datele de import. Dacă fișierul este un fișier .zip, un nod <zipimportdetails>
trebuie să fie prezent cu un nod<zipimportdetail>
pentru fiecare fișier din fișierul .zip.filetype
Acestă valoare poate fi csv, xml sau zip. associatedmap
Numelemapării de date Dataverse de import pe care să o utilizați cu acest fișier. Dacă este necompletat, încercările de a utiliza sistemul au determinat numele mapării de date pentru acest fișier. importtoentity
Poate numele fișierului exe din fișierul zip, un URL sau un fișier .msi să furnizeze un link de invocat la finalul procesului. datadelimiter
Numele delimitatorului de date utilizat în fișierul de import. Valorile valide sunt ghilimele simple sau duble. fielddelimiter
Numele delimitatorului de câmp utilizat în fișierul de import. Valorile valide sunt virgulă sau două puncte sau ghilimele simple. enableduplicatedetection
Indică dacă să activați regulile detectării de dubluri la importul datelor. Valorile valide sunt adevărat sau fals. isfirstrowheader
Folosit pentru a indica faptul că primul rând al fișierului de import conține numele câmpurilor. Valori valide sunt true
saufalse
.isrecordownerateam
Indică dacă proprietarul înregistrării la import ar trebui să fie o echipă. Valori valide sunt true
saufalse
.owneruser
Indică ID-ul de utilizator care ar trebui să dețină înregistrările. Valoarea implicită este utilizatorul conectat în prezent. waitforimporttocomplete
Dacă true
, sistemul așteaptă completarea importului înainte de a continua. Dacăfalse
, pune la coadă operațiunile și merge mai departe.<zipimportdetails>
nod
Acest nod conține o serie de noduri<zipimportdetail>
care descriu fișierele incluse într-un fișier zip care este utilizat pentru a importa în Dynamics 365.<zipimportdetail>
nod
Utilizați acest nod sub nodul<zipimportdetails>
pentru a furniza informații despre un fișier individual într-un fișier .zip care este specificat în nodul<configimportfile>
.<filestoimport> ... ... <zipimportdetails> <zipimportdetail filename="subfile1.csv" filetype="csv" importtoentity="account" /> <zipimportdetail filename="subfile2.csv" filetype="csv" importtoentity="contact" /> </zipimportdetails> </filestoimport>
Atributele acceptate sunt enumerate mai jos:
Atribut Descriere filename
Numele fișierului care conține datele de import. filetype
Această valoare poate fi csv sau xml. importtoentity
Poate numele fișierului exe din fișierul zip, un url sau un fișier .msi să furnizeze un link de invocat la finalul procesului. <filesmapstoimport>
nod
Acest nod conține o serie de noduri<configmapimportfile>
de importat. Ordinea fișierelor de hartă din acest nod indică ordinea în care sunt importate. Pentru informații despre hărțile de date, consultați Creați mapări date pentru import.<configimportmapfile>
nod
Utilizați acest nod sub nodul<filesmapstoimport>
pentru a furniza informații despre un fișier hartă individual pe care să îl importați în Dataverse.<filesmapstoimport> <configimportmapfile filename="FileMap.xml" /> </filesmapstoimport>
<cmtdatafiles>
nod
Acest nod conține o matrice de noduri care conține versiunea localizată a fișierului de date de<cmtdatafile>
configurare de importat.<cmtdatafile>
nod
Utilizați acest nod sub nodul<cmtdatafiles>
pentru a specifica fișierele de date de configurare localizate împreună cu ID-ul local (necesar) și fișierul cu informații despre utilizator (opțional). De exemplu:<cmtdatafiles> <cmtdatafile filename="data_1033.zip" lcid="1033" usermapfilename="UserMap.xml" /> <cmtdatafile filename="data_1041.zip" lcid="1041" usermapfilename="" /> </cmtdatafiles>
Puteți defini logica personalizată în metoda
OverrideConfigurationDataFileLanguage
(explicată mai târziu) pentru a importa un fișier de date de configurare localizat în loc de cel implicit (specificat în crmmigdataimportfile) pe baza valorii locale ID (LCID) specificată folosind setările runtime (explicate mai târziu).Selectați Salvare totală.
Următorul xml reprezintă conținutul unui fișier eșantion
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>
Adăugarea unui cod personalizat
Puteți adăuga un cod personalizat care se execută înainte, în timpul și după importarea pachetului într-un mediu. În acest scop, urmați aceste instrucțiuni.
Editați fișierul PackageTemplate.cs (sau PackageImportExtension.cs) din dosarul rădăcină al proiectului.
În fișierul C#, puteți:
Introduceți codul personalizat pentru a executa atunci când pachetul este inițializat în definiția metodei de înlocuire a
InitializeCustomExtension
.Această metodă poate fi utilizată pentru a permite utilizatorilor să utilizeze parametrii de rulare în timpul rulării unui pachet. Ca dezvoltator, puteți adăuga asistență pentru orice parametru de execuție la pachetul dvs. utilizând proprietatea RuntimeSettings atâta timp cât aveți cod pentru procesarea acestuia pe baza intrării utilizatorului.
De exemplu, următorul cod de eșantionare activează un parametru de rulare numit
SkipChecks
pentru pachetul care are două valori posibile: adevărat sau fals. Codul de eșantion verifică dacă utilizatorul a specificat parametri de execuție în timpul rulării Package Deployer (fie folosind linia de comandă sau PowerShell), apoi procesează informațiile în consecință. Dacă utilizatorul nu specifică niciun parametru de rulare în timpul rulării pachetului, valoarea proprietății RuntimeSettings va fi nulă.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"); }
Acest cod permite administratorului să utilizeze linia de comandă sau cmdlet Import-CrmPackage pentru a specifica dacă săriți verificările de siguranță în timpul rulării instrumentului Package Deployer pentru a importa pachetul. Informații suplimentare: Implementați pachete utilizând Package Deployer și Windows PowerShell
Introduceți codul personalizat pentru a fi executat înainte ca soluțiile să fie importate în definiția metodei de anulare a
PreSolutionImport
pentru a specifica dacă mențineți sau rescrieți personalizările în timp ce actualizați soluția specificată într-o instanță țintă Dataverse și dacă activați automat inserturile și fluxurile de lucru.Utilizați definiția metodei de suprascriere pentru
RunSolutionUpgradeMigrationStep
a efectua transformarea datelor sau upgrade-ul între două versiuni ale unei soluții Această metodă este apelată numai dacă soluția pe care o importați este deja prezentă în instanța țintă Dataverse .Această funcție se așteaptă la următorii parametri:
Parametru Descriere solutionName
Numele soluției oldVersion
Numărul de versiune al soluției vechi newVersion
Numărul de versiune al soluției noi oldSolutionId
GUID-ul soluției vechi. newSolutionId
GUID-ul soluției noi. Introduceți codul particularizat pentru a executa înainte ca importul de soluție să se finalizeze în definiția de înlocuire a metodei
BeforeImportStage
. Datele eșantion și unele fișiere plane pentru soluții specificate în fișierulImportConfig.xml
sunt importate înainte de completarea importului de soluții.Înlocuiți limba selectată în prezent pentru importarea datelor de configurare utilizând definiția metodei de suprascriere.
OverrideConfigurationDataFileLanguage
Dacă ID-ul setărilor regionale specificat (LCID) al limbii specificate nu se găsește în lista de limbi disponibile din pachet, fișierul de date implicit este importat.Specificați limbile disponibile pentru datele de configurare din nodul
<cmtdatafiles>
în fișierulImportConfig.xml
. Fișierul implicit de importare a datelor de configurare este specificat în atributulcrmmigdataimportfile
în fișierulImportConfig.xml
.Omiterea verificărilor datelor (OverrideDataImportSafetyChecks = adevărat) poate fi eficientă aici dacă sunteți sigur că instanța țintă Dataverse nu conține date.
Introduceți codul particularizat pentru a executa după ce importul se finalizează în definiția de înlocuire a metodei
AfterPrimaryImport
>. Fișierele plate rămase care nu au fost importate anterior, înainte de începerea importului soluției, sunt importate acum.Modificați numele implicit al dosarului pachetului dvs. în numele de pachet dorit. Pentru a face acest lucru, redenumiți dosarul
PkgFolder
(sau PkgAssets) din panoul Explorator de soluții și apoi editați valoarea returnată sub proprietateaGetImportPackageDataFolderName
.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"; } }
Schimbați numele pachetului prin editarea valorii de returnare sub proprietatea
GetNameOfImport
.public override string GetNameOfImport(bool plural) { return "Package Short Name"; }
Această valoare returnată este numele pachetului care apare pe pagina de selectare a pachetului din expertul Dynamics 365 Package Deployer .
Schimbați descrierea pachetului prin editarea valorii de returnare sub proprietatea
GetImportPackageDescriptionText
.public override string GetImportPackageDescriptionText { get { return "Package Description"; } }
Această valoare returnată este descrierea pachetului care apare alături de numele pachetului pe pagina de selectare a pachetului din expert. Package Deployer
Schimbați numele lung al pachetului prin editarea valorii de returnare sub proprietatea
GetLongNameOfImport
.public override string GetLongNameOfImport { get { return "Package Long Name"; } }
Numele lung al pachetului apare pe pagina următoare după ce ați selectat pachetul de instalat.
În plus, următoarele funcții și variabile sunt disponibile pentru pachet:
Nume Tip Descriere CreateProgressItem(String) Function Utilizat pentru a crea un nou element de progres în interfața utilizator (UI). RaiseUpdateEvent(String, ProgressPanelItemStatus) Function Utilizat pentru a actualiza progresul creat de apelul la CreateProgressItem(String).
ProgressPanelItemStatus este o enumerare cu următoarele valori:
Funcționează = 0
Complet = 1
Nereușit = 2
Avertisment = 3
Necunoscut = 4RaiseFailEvent(String, Exception) Function Folosit pentru a eșua importul de stare curentă cu un mesaj de excepție. IsRoleAssoicatedWithTeam(Guid, Guid) Function Utilizat pentru a determina dacă un rol este asociat cu o echipă specificată. IsWorkflowActive(Guid) Function Utilizat pentru a determina dacă un flux de lucru specificat este activ. PackageLog Indicator de clasă Un indicator către interfața de logare inițiată pentru pachet. Această interfață este folosită de un pachet pentru a înregistra mesaje și excepții de la fișierul jurnal de pachete. RootControlDispatcher Proprietate O interfață de dispecerat folosită pentru a permite controlului dvs. să-și redea propria UI în timpul implementării pachetului. Utilizați această interfață pentru a încadra orice elemente sau comenzi UI. Este important să verificați această variabilă pentru valori nule înainte de a o utiliza, deoarece este posibil să nu fie setată la o valoare. CrmSvc Proprietate Un indicator pentru clasa CrmServiceClient care permite unui pachet să abordeze Dynamics 365 din interiorul pachetului. Utilizați acest indicator pentru a executa metode SDK și alte acțiuni în metodele suprasolicitate. DataImportBypass Proprietate Specificați dacă Dynamics 365 Package Deployer omite toate operațiunile de importare a datelor, cum ar fi importul eșantioanelor de date Dataverse, date de fișier plat și date exportate din instrumentul Migrare configurare. Specificați adevărat sau fals. Implicit este false
.OverrideDataImportSafetyChecks Proprietate Specificați dacă Dynamics 365 Package Deployer ocolește unele dintre verificările sale de siguranță, ceea ce ajută la îmbunătățirea performanței importului. Specificați true
saufalse
. Implicit estefalse
.
Ar trebui să setați această proprietate latrue
numai dacă instanța țintă Dataverse nu conține date.Salvați-vă proiectul. Următorul pas este să construiți pachetul.
Construire și implementare
Următoarele secțiuni descriu modul de construire și implementare a unui pachet.
Versiune
Crearea pachetului este descrisă mai jos, în funcție de instrumentul pe care îl utilizați.
Pentru a construi un pachet creat cu CLI, puteți încărca fișierul .csproj în, dar în Visual Studio schimb vom folosi comanda dotnet și MSBuild. Exemplul de mai jos presupune că directorul de lucru conține fișierul *.csproj.
> dotnet publish
DeploymentPackage -> C:\Users\peter\Downloads\DeploymentPackage\bin\Debug\DeploymentPackage.1.0.0.pdpkg.zip
Opțional, puteți vedea detaliile pachetului construit.
> pac package show --package .\bin\Debug\DeploymentPackage.1.0.0.pdpkg.zip
Pachetul dvs. este format din următoarele fișiere sub dosarul <Project>\Bin\Debug folder.
- <Folderul> PackageName: Numele folderului este același cu cel pe care l-ați modificat pentru numele folderului pachetului la pasul 2.g din această secțiune Adăugați cod personalizat. Acest dosar conține toate soluțiile, date de configurare, fișiere plate și conținuturile pentru pachetul dvs.
Notă
Este posibil să vedeți un dosar .NET (de exemplu, net472) care conține un dosar pdpublish. DLL-ul dvs. și alte fișiere de proiect sunt în acel dosar pdpublish.
- <PackageName>.dll: Ansamblul conține codul particularizat pentru pachetul dvs. În mod implicit, numele ansamblului este identic cu numele proiectului dvs.
Implementați
După ce creați un pachet, îl puteți implementa în instanța Dataverse utilizând fie instrumentul Package Deployer, Windows PowerShell sau o comandă CLI.
Pentru a implementa folosind instrumentul Package Deployer, mai întâi descărcați instrumentul așa cum este descris în instrumentele de dezvoltare Dataverse. Apoi, urmați informațiile detaliate despre implementarea pachetelor din articolul Implementarea pachetelor utilizând Package Deployer sau Windows PowerShell.
Pentru a implementa folosind CLI, utilizați comanda
pac package deploy
.> pac package deploy --package .\bin\Debug\DeploymentPackage.1.0.0.pdpkg.zip
Notă
Pentru a implementa un pachet într-un mediu țintă folosind CLI, trebuie mai întâi să configurați un profil de autentificare și să selectați o organizație. Mai multe informații: creare aut pac, selectare org pac
Cele mai bune practici
Mai jos sunt enumerate câteva sfaturi privind cele mai bune practici ce pot fi urmate atunci când lucrați cu pachetele Package Deployer.
Crearea pachetelor
Când creează pachete, dezvoltatorii trebuie să:
- Asigurați-vă că ansamblurile de pachete sunt semnate.
Implementarea pachetelor
Când implementează pachete, administratorii Dataverse trebuie să facă următoarele lucruri:
- Insistați asupra semnării ansamblurilor de pachete, astfel încât să puteți urmări un ansamblu înapoi la sursă.
- Testați pachetul pe o instanță de preproducție, de preferință o imagine în oglindă a instanță de producție, înainte de a-l rula pe un instanță de producție.
- Faceți o copie a instanței de producție înainte de a implementa pachetul.