Oprette pakker til Package Deployer-værktøjet
Package Deployer gør det muligt for administratorer at installere pakker på Microsoft Dataverse-forekomster. En Package Deployer pakke kan bestå af en eller flere af følgende:
- En eller flere Dataverse-løsningsfiler.
- Flade filer eller eksporterede konfigurationsdatafiler fra værktøjet Konfigurationsoverførsel. Du kan finde flere oplysninger om værktøjet under Flytte konfigurationsdata på tværs af forekomster og organisationer med værktøjet Konfigurationsoverførsel.
- Brugerdefineret kode, der kan køre, før, under eller efter at pakken er installeret på Dataverse-forekomsten.
- HTML-indhold er specifik for pakken, der kan vises i begyndelsen og slutningen af installationsprocessen. Indholdet kan være nyttigt for at give en beskrivelse af de løsninger og filer, der installeres i pakken.
Bemærk
Der findes en anden pakketype, der kaldes en plug-in-pakke. Den type pakke gælder for plug-in-afhængige samlinger og har ingen relation til Package Deployer-pakker.
Forudsætninger
- Sørg for, at du har alle de løsnings- og andre filer klar, som du vil medtage i pakken.
- Visual Studio 2019 eller nyere eller Visual Studio Code.
Procesoversigt
Opret en Package Deployer-pakke ved at udføre følgende trin.
- Oprette et Visual Studio- eller MSBuild-projekt
- Tilføje løsninger og andre filer til projektet
- Opdatere de medfølgende HTML-filer (valgfrit)
- Angiv konfigurationsværdier for pakken
- Definere brugerdefineret kode til pakken
- Opbygning og installation af pakken
Disse trin beskrives mere detaljeret i denne artikel.
Oprette et pakkeprojekt
Det første trin er at oprette et Visual Studio- eller MSBuild-projekt for pakken. Hvis du vil gøre det, skal en af to tilgængelige værktøjsudvidelser være installeret på udviklingscomputeren. Hvis du bruger Visual Studio Code, skal du installere Microsoft Power Platform CLI. Ellers hvis du bruger Visual Studio 2019, skal du installere Power Platform Tools til Visual Studio. Power Platform Tools-udvidelsen er i øjeblikket kun tilgængelig for Visual Studio 2019. Men det oprettede projekt kan bygges i Visual Studio 2019 eller nyere.
Vælg den relevante fane nedenfor for at finde ud af, hvordan du opretter et projekt ved hjælp af den ønskede værktøjsudvidelse. Begge værktøjer output projektet i et lignende format.
Kør kommandoen pac package init for at oprette den første pakke. Flere oplysninger: pac-pakke
pac package init help
pac package init --outputDirectory DeploymentPackage
Det resulterende CLI-output indeholder de mapper og filer, der vises nedenfor. Mappenavnet "DeploymentPackage" blev brugt her som et eksempel.
C:.
└───DeploymentPackage
│ DeploymentPackage.csproj
│ PackageImportExtension.cs
│
└───PkgAssets
ImportConfig.xml
manifest.ppkg.json
I det oprettede projekt skal du finde konfigurationsfilen ImportConfig.xml i mappen PkgAssets og filen PackageImportExtension.cs. Du vil ændre disse filer som beskrevet senere i denne artikel.
Tilføj pakkefiler
Når du har oprettet et pakkeprojekt, kan du begynde at føje løsninger og andre filer til det pågældende projekt.
Når du bruger CLI, kan du tilføje eksterne pakker, løsninger og referencer til pakkeprojektet ved hjælp af en af underkommandoer Tilføj. Angiv pac package help
for at få vist listen over underkommandoer. Lad os føje en løsning til pakken.
> 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.
Konfigurere pakken
Definer pakkekonfigurationen ved at tilføje oplysninger om din pakke i filen ImportConfig.xml, der er tilgængelig i projektet. Åbne filen til redigering. Følgende liste indeholder oplysninger om hver parameter og node i konfigurationsfilen.
installsampledata
True
ellerfalse
. Hvistrue
, installeres eksempeldata til Dataverse forekomsten. Dette er de samme eksempeldata, som du kan installere fra området Indstillinger>Datastyring i Dataverse.waitforsampledatatoinstall
True eller false. Hvis true, og hvis installsampledata også er angivet til true, skal du vente på, at eksempeldataene installeres, før du installerer pakken.Bemærk
Sørg for, at du indstiller installsampledata til sand, hvis du angiver
waitforsampledatatoinstall
til sand.agentdesktopzipfile
Filnavnet på zip-fil til at pakke ud. Hvis du angiver et .zip-filnavn her, tilføjes en skærm under pakkeinstallationsprocessen, der beder dig om at vælge en placering, hvor du vil udpakke indholdet af filen.Denne attribut bruges normalt til at oprette pakker til Unified Service Desk for Dynamics 365. Du kan finde flere oplysninger om Unified Service Desk i Administrationsvejledning til Unified Service Desk 3.0.
agentdesktopexename
Navnet på .exe- eller .msi-filen i zip-filen eller en URL-adresse, der skal aktiveres i slutningen af installationen.Denne attribut bruges normalt til at oprette pakker til Unified Service Desk.
crmmigdataimportfile
Filnavnet på standardkonfigurationsdatafilen (.zip), der eksporteres ved hjælp af værktøjet Konfigurationsoverførsel.Du kan også importere en oversat version af konfigurationsdatafilen baseret på landestandarden-id'et (LCID) angivet ved hjælp af nye kørselsindstillinger under kørsel af Package Deployer. Brug
<cmtdatafile>
-noden (forklaret senere) til at angive de oversatte versioner af konfigurationsdatafilen i en pakke, og brug derefterOverrideConfigurationDataFileLanguage
-metoden (forklaret senere) til at angive logikken for import af konfigurationsdatafilen baseret på det landestandard-id, der er angivet ved hjælp af kørselsindstillingerne. Du kan ikke importere mere end én konfigurationsdatafil med en pakke ad gangen.For Dataverse (det lokale miljø) gælder det, at hvis din konfigurationsdatafil indeholder brugeroplysninger, og både kilde- og destinationsforekomster af Dataverse er på det samme Active Directory-domæne, importeres brugeroplysninger til Dataverse-destinationsforekomsten. Hvis du vil importere brugeroplysninger til en Dataverse-forekomst (det lokale miljø) på et andet domæne, skal du medtage brugertilknytningsfilen (.xml), der generes ved hjælp af værktøjet Konfigurationsoverførsel i dit projekt, og angive den sammen med konfigurationsdatafilen ved hjælp af
usermapfilename
-attributten i<cmtdatafile>
-noden, som bliver forklaret senere. Brugeroplysningerne kan ikke importeres til Dataverse-forekomster.
<solutions>
-node
Indeholder en matrix af<configsolutionfile>
noder, der beskriver løsningerne, der skal importeres. Rækkefølgen af løsninger under denne node angiver den rækkefølge, hvori løsningerne importeres på Dataverse-destinationsforekomsten.<configsolutionfile>
-node
Brug denne node under den<solutions>
-noden for at angive individuelle løsninger og følgende oplysninger for hver løsning, der skal importeres:solutionpackagefilename
: Angiv .zip-filnavnet på din løsning. Krævet.overwriteunmanagedcustomizations
: Angiv, om du vil overskrive alle ikke-administrerede tilpasninger, når du importerer en løsning, der allerede findes i Dynamics 365-destinationsforekomsten. Denne attribut er valgfri, og hvis du ikke angiver denne attribut, bevares de ikke-administrerede tilpasninger i den eksisterende løsning som standard på Dynamics 365-destinationsforekomsten.publishworkflowsandactivateplugins
: Angiv, om du vil udgive arbejdsprocesser og aktivere plug-ins i Dynamics 365-destinationsforekomst, når løsningen er importeret. Denne attribut er valgfri, og hvis du ikke angiver ikke denne attribut, udgives arbejdsprocesser, og plug-ins aktiveres som standard, når løsningen er importeret i Dynamics 365-destinationsforekomsten.Du kan tilføje flere løsningfilnavne i en pakke ved at tilføje så mange
<configsolutionfile>
noder. Hvis f.eks. tre løsningsfiler skal importeres, skal du tilføje dem som vist herunder:
<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>
-node
Indeholder en matrix af<configimportfile>
og<zipimportdetails>
noder, der bruges til at beskrive de enkelte filer og zip-filer, der henholdsvis skal importeres.<configimportfile>
-node
Brug denne node under noden<configimportfile>
til at beskrive en fil, der importeres til Dataverse. Du kan tilføje flere filer i en pakke ved at tilføje så mange<configimportfile>
noder.<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>
Nedenfor vises en liste over understøttede attributter:
Attribut Beskrivelse filename
Navn på den fil, der indeholder importdataene. Hvis filen er en .zip-fil, skal der være en <zipimportdetails>
-node sammen med en<zipimportdetail>
-node for hver fil i .zip-filen.filetype
Denne værdi kan være .csv, .xml eller .zip. associatedmap
Navnet på den Dataverse importdatatilknytning, der skal bruges sammen med denne fil. Hvis feltet er tomt, knyttes forsøg på at bruge systemet, der har fastsat navnet på importdatatilknytningen for denne fil. importtoentity
Navnet på .exe-filen i .zip-filen kan være en URL-adresse eller en .msi-fil, der indeholder et hyperlink, der kan aktiveres ved afslutningen af processen. datadelimiter
Navn på den dataafgrænser, der bruges i importfilen. De gyldige værdier er enkelt anførselstegn eller dobbelt anførselstegn. fielddelimiter
Navn på den feltafgrænser, der bruges i importfilen. Gyldige værdier er komma, kolon eller enkelt anførselstegn. enableduplicatedetection
Angiver, om der skal aktiveres regler for registrering af dubletter ved import af data. Gyldige værdier er true eller false. isfirstrowheader
Bruges til at angive, at den første række i den importerede fil indeholder feltnavnene. Gyldige værdier er true
ellerfalse
.isrecordownerateam
Angiver, om ejeren af post ved import skal være et team. Gyldige værdier er true
ellerfalse
.owneruser
Angiver det bruger-ID, der skal eje poster. Standardværdien er den bruger, der aktuelt er logget på. waitforimporttocomplete
Hvis true
, venter systemet på, at importen skal afsluttes, før du fortsætter. Hvisfalse
, bliver jobbet sat i kø og fortsætter.<zipimportdetails>
-node
Denne node indeholder en matrix af<zipimportdetail>
noder, der beskriver filerne i en zip-fil, der bruges til at importere til Dynamics 365.<zipimportdetail>
-node
Brug denne node under noden<zipimportdetails>
for at give oplysninger om en enkelt fil i en .zip-fil, der er angivet i noden<configimportfile>
.<filestoimport> ... ... <zipimportdetails> <zipimportdetail filename="subfile1.csv" filetype="csv" importtoentity="account" /> <zipimportdetail filename="subfile2.csv" filetype="csv" importtoentity="contact" /> </zipimportdetails> </filestoimport>
Understøttede attributter vises herunder:
Attribut Beskrivelse filename
Navn på den fil, der indeholder importdataene. filetype
Denne værdi kan være csv eller xml. importtoentity
Navnet på exe-filen i zip-filen kan være en url-adresse eller en .msi-fil, der indeholder et hyperlink til at starte i slutningen af processen. <filesmapstoimport>
-node
Denne node indeholder en matrix af<configmapimportfile>
noder, der skal importeres. Rækkefølgen af filerne i denne node angiver den rækkefølge, hvori de er importeret. Du kan finde oplysninger om datatilknytninger i Oprette datatilknytninger for import.<configimportmapfile>
-node
Brug denne node under noden<filesmapstoimport>
for at give oplysninger om en individuel tilknytningsfil til import i Dataverse.<filesmapstoimport> <configimportmapfile filename="FileMap.xml" /> </filesmapstoimport>
<cmtdatafiles>
-node
Denne node indeholder en matrix af<cmtdatafile>
-noder, der indeholder den oversatte version af den konfigurationsdatafil, der skal importeres.<cmtdatafile>
-node
Brug denne node under<cmtdatafiles>
-noden til at angive de oversatte konfigurationsdatafiler sammen med landestandard-id'et (obligatorisk) og tilknytningsfilen med brugeroplysninger (valgfrit). Eksempel:<cmtdatafiles> <cmtdatafile filename="data_1033.zip" lcid="1033" usermapfilename="UserMap.xml" /> <cmtdatafile filename="data_1041.zip" lcid="1041" usermapfilename="" /> </cmtdatafiles>
Du kan definere din brugerdefinerede logik i
OverrideConfigurationDataFileLanguage
-metoden (forklares senere) for at importere en oversat konfigurationsdatafil i stedet for standardfilen (angivet i crmmigdataimportfile) baseret på den værdi for landestandard-id (LCID), der er angivet ved hjælp af kørselsindstillingerne (forklares senere).Vælg Gem alle.
Følgende xml angiver indholdet af en
ImportConfig.xml
-eksempelfil.<?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>
Tilføje brugerdefineret kode
Du kan tilføje brugerdefineret kode, der køres før, under og efter at pakken er importeret i et miljø. Det gøres ved at følge denne vejledning.
Rediger filen PackageTemplate.cs (eller PackageImportExtension.cs) i projektets rodmappe.
I C# filen kan du:
Angive brugerdefineret kode, der skal udføres, når pakken er initialiseret i tilsidesættesmetodedefinitionen af
InitializeCustomExtension
.Denne metode kan bruges til at lade brugerne bruge kørselsparametre under kørsel af en pakke. Som udvikler kan du tilføje understøttelse af alle kørselsparametre til din pakke ved at bruge egenskaben RuntimeSettings, så længe du har koden til at behandle den egenskab, der er baseret på brugerinputtet.
Følgende eksempelkode giver f.eks mulighed for en kørselsparameter, der kaldes
SkipChecks
for pakken, der har to mulige værdier: true eller false. Eksempelkoden kontrollerer, om brugeren har angivet kørselsparametre under kørsel af Package Deployer (enten ved hjælp af kommandolinjen eller PowerShell), og behandler oplysninger ud fra dette. Hvis brugeren ikke har angivet nogen kørselsparametre under kørsel af pakken, bliver værdien af egenskaben 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"); }
Denne kode giver administratoren mulighed for at bruge kommandolinjen eller Import-CrmPackage-cmdlet til at angive, om sikkerhedskontrollerne skal springes over under kørsel af Package Deployer-værktøjet for at importere pakken. Flere oplysninger: Installere pakker ved hjælp af Package Deployer og Windows PowerShell
Angiv brugerdefineret kode, der skal afvikes, før løsningerne importeres definitionen af tilsidesættelsesmetoden
PreSolutionImport
for at angive, om tilpasningerne skal bevares eller tilsidesættes under opdatering af den angivne løsning i en Dataverse-destinationsforekomst, og om plugins og arbejdsprocesser skal aktiveres automatisk.Brug definitionen af tilsidesættelsesmetoden for
RunSolutionUpgradeMigrationStep
til at udføre datatransformation eller -opgradering mellem to versioner af en løsning. Denne metode kaldes kun, hvis den løsning, du importerer, allerede findes i Dataverse-destinationsforekomsten.Denne funktion forventer følgende parametre:
Parameter Beskrivelse solutionName
Navnet på løsningen oldVersion
Versionsnummer for den gamle løsning newVersion
Versionsnummer for den nye løsning oldSolutionId
GUID til den gamle løsning newSolutionId
GUID til den nye løsning. Angiv brugerdefineret kode, der skal udføres, før importen af løsningen fuldføres i tilsidesættelsesdefinitionen for
BeforeImportStage
-metoden. Eksempeldataene og nogle flade filer til løsninger, der er angivet iImportConfig.xml
-filen, importeres, før importen af løsningen er fuldført.Tilsidesæt det sprog, der er valgt i øjeblikket til konfiguration af dataimport, ved hjælp af definitionen af tilsidesættelsesmetoden
OverrideConfigurationDataFileLanguage
. Hvis den angivne landestandard-ID (LCID) for det angivne sprog ikke findes på listen over tilgængelige sprog i pakken, importeres standarddatafilen.Du angiver de tilgængelige sprog for konfigurationsdataene i
<cmtdatafiles>
-noden iImportConfig.xml
-filen. Standardimportfilen for konfigurationsdata er angivet icrmmigdataimportfile
-attributten iImportConfig.xml
-filen.Det kan være effektivt at springe datakontroller over her (OverrideDataImportSafetyChecks = sand), hvis du er sikker på, at Dataverse-destinationsforekomsten ikke indeholder data.
Angiv brugerdefineret kode, der skal udføres, efter importen af løsningen er fuldført i tilsidesættelsesdefinitionen for metoden
AfterPrimaryImport
>. De resterende flade filer, der ikke er blevet importeret tidligere, før løsning af importen gik i gang, importeres nu.Skift standardnavnet på din pakkemappe til det ønskede pakkenavn. Det gør du ved at omdøbe
PkgFolder
(eller PkgAssets)-mappen i ruden Løsningsoversigt og derefter redigere returværdien under egenskabenGetImportPackageDataFolderName
.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"; } }
Ændre navnet på pakken ved at redigere returneringsværdien under egenskaben
GetNameOfImport
.public override string GetNameOfImport(bool plural) { return "Package Short Name"; }
Denne returnerede værdi er navnet på den pakke, der vises på siden til valg af pakken i guiden Dynamics 365 Package Deployer.
Ændre pakkebeskrivelsen ved at redigere returneringsværdien under egenskaben
GetImportPackageDescriptionText
.public override string GetImportPackageDescriptionText { get { return "Package Description"; } }
Denne returnerede værdi er den pakkebeskrivelse, der vises ved siden af navnet på pakken på siden til valg af pakken i guiden Package Deployer.
Ændre pakkens lange navn ved at redigere returneringsværdien under egenskaben
GetLongNameOfImport
.public override string GetLongNameOfImport { get { return "Package Long Name"; } }
Pakkens lange navn vises på næste side, når du har valgt at installere pakken.
Desuden er følgende funktion og variabler tilgængelige til pakken:
Navn Skriv Beskrivelse CreateProgressItem(String) Funktion Bruges til at oprette et nyt statuselement i brugergrænsefladen. RaiseUpdateEvent(String, ProgressPanelItemStatus) Funktion Bruges til at opdatere de fremskridt, der er oprettet ved et opkald til CreateProgressItem(String).
ProgressPanelItemStatus er en fasttekstværdi med følgende værdier:
Arbejder = 0
Fuldført = 1
Mislykkedes = 2
Advarsel = 3
Ukendt = 4RaiseFailEvent(String, Exception) Function Bruges til at mislykkes den aktuelle status for import med en undtagelsesmeddelelse. IsRoleAssoicatedWithTeam(Guid, Guid) Funktion Bruges til at afgøre, om en rolle er knyttet til et bestemt team. IsWorkflowActive(Guid) Funktion Bruges til at bestemme, om en bestemt arbejdsproces er aktiv. PackageLog Klassemarkør En markør til den initialiserede grænseflade til logføring for pakken. Denne grænseflade udnyttes af en pakke til at logge meddelelser og undtagelser til pakkelogfilen. RootControlDispatcher Egenskab En ekspeditørgrænseflade, der anvendes til at give dit kontrolelement mulighed for at gengive sin egen brugergrænseflade under installation af pakken. Brug denne grænseflade til at ombryde alle elementer i brugergrænsefladen eller kommandoer. Det er vigtigt at kontrollere denne variabel til null-værdier, før du bruger den, da den muligvis kan eller ikke kan angives til en værdi. CrmSvc Egenskab En henvisning til CrmServiceClient-klasen, der giver en pakke mulighed for at henvende sig til Dynamics 365 fra pakken. Brug denne markør til at udføre SDK-metoder og andre handlinger i de metoder, der tilsidesættes. DataImportBypass Egenskab Angiv, om Dynamics 365 Package Deployer springer alle dataimporthandlinger over som f.eks. import af Dataverse-eksempeldata og flad fil-data, der er eksporteret fra værktøjet Konfigurationsoverførsel. Angiv sand eller falsk. Standard er false
.OverrideDataImportSafetyChecks Egenskab Angiv, om Dynamics 365 Package Deployer tilsidesætter nogle af dets sikkerhedskontroller, der gør det muligt at forbedre importens ydeevne. Angiv true
ellerfalse
. Standard erfalse
.
Du skal kun angive denne egenskab tiltrue
, hvis Dataverse-destinationsforekomsten ikke indeholder data.Gem dit projekt. Det næste trin er at opbygge pakken.
Opbyg, og installer
De følgende afsnit beskriver, hvordan man opbygger og implementerer en pakke.
Byg
Opbygning af din pakke er beskrevet nedenfor afhængigt af hvilket værktøj du bruger.
For at bygge en pakke, der er oprettet med CLI, kan du indlæse .csproj-filen i Visual Studio, men i stedet skal vi bruge dotnet-kommandoen og MSBuild. I eksemplet nedenfor antages det, at arbejdsmappen indeholder filen *.csproj.
> dotnet publish
DeploymentPackage -> C:\Users\peter\Downloads\DeploymentPackage\bin\Debug\DeploymentPackage.1.0.0.pdpkg.zip
Du kan også se detaljerne i den indbyggede pakke.
> pac package show --package .\bin\Debug\DeploymentPackage.1.0.0.pdpkg.zip
Pakken indeholder følgende filer under mappen <Projekt>\Bin\Debug.
- <PackageName>-mappe: Mappenavnet er det samme som det, du ændrede for dit pakkemappenavn i trin 2.g i dette afsnit Tilføj brugerdefineret kode. Denne mappe indeholder alle løsninger, konfigurationsdata, flade filer og indholdet for din pakke.
Bemærk
Du kan muligvis se en .NET-mappe (f.eks. net472), der indeholder en pdpublish-mappe. Dine DLL- og andre projektfiler findes i pdpublish-mappen.
- <PackageName>.dll: Assemblyet indeholder den brugerdefinerede kode til pakken. Som standard er navnet på den assembly det samme som dit projektnavn.
Installer
Når du har oprettet en pakke, kan du installere den på Dataverse-forekomsten, enten ved hjælp af Package Deployer-værktøjet eller Windows PowerShell eller en CLI-kommando.
Hvis du vil installere ved hjælp af Package Deployer-værktøjet, skal du først hente værktøjet som beskrevet i Dataverse-udviklingsværktøjerne. Følg derefter de detaljerede oplysninger om pakkeimplementering i artiklen Implementer pakker ved hjælp af Package Deployer eller Windows PowerShell.
Anvend CLI ved hjælp af
pac package deploy
-kommando.> pac package deploy --package .\bin\Debug\DeploymentPackage.1.0.0.pdpkg.zip
Bemærk
Hvis du vil installere en pakke i et destinationsmiljø ved hjælp af CLI, skal du først konfigurere en godkendelsesprofil og vælge en organisation. Flere oplysninger: pac auth create, pac org select
Bedste praksis
Nedenfor er der et par tip til bedste praksis, du kan følge, når du arbejder med Package Deployer-pakker.
Oprette pakker
Når udviklere opretter pakker, skal de:
- Kontrollér, at pakke-assembly er signeret.
Installere pakker
Ved installation af pakker skal Dataverse-administratorer:
- Insistere på en signeret pakkeassembly, så du kan spore en assembly tilbage til kilden.
- Teste pakken på en forproduktionsforekomst, helst et spejlbillede af produktionsforekomsten, før du kører den på en produktionsforekomst.
- Sikkerhedskopiere produktionsforekomsten, før pakken installeres.