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

  1. 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 eller false. Hvis true, 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 derefter OverrideConfigurationDataFileLanguage-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 eller false.
    isrecordownerateam Angiver, om ejeren af post ved import skal være et team. Gyldige værdier er true eller false.
    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. Hvis false, 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).

  2. 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.

  1. Rediger filen PackageTemplate.cs (eller PackageImportExtension.cs) i projektets rodmappe.

  2. I C# filen kan du:

    1. 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

    2. 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.

    3. 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.
    4. 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 i ImportConfig.xml-filen, importeres, før importen af løsningen er fuldført.

    5. 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 i ImportConfig.xml-filen. Standardimportfilen for konfigurationsdata er angivet i crmmigdataimportfile-attributten i ImportConfig.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.

    6. 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.

    7. 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 egenskaben 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. Æ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.

    9. Æ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.

    10. Æ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.

  3. 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 = 4
    RaiseFailEvent(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 eller false. Standard er false.

    Du skal kun angive denne egenskab til true, hvis Dataverse-destinationsforekomsten ikke indeholder data.
  4. 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.

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.

Se også

Løsningspakkeværktøj