Opprette pakker for Package Deployer-verktøyet

Package Deployer gjør det mulig for administratorer å distribuere pakker på Microsoft Dataverse-forekomster. En Package Deployer-pakke kan bestå av enhver eller alle av følgende:

  • Én eller flere løsningsfiler for Dataverse.
  • Flate filer eller eksporterte konfigurasjonsdatafiler fra verktøyet for konfigurasjonsoverføring. For mer informasjon om verktøyet, se Flytte konfigurasjonsdata på tvers av forekomster og organisasjoner med Configuration Migration Tool.
  • Egendefinert kode som kan kjøre før, samtidig eller etter at pakken distribueres til Dataverse-forekomsten.
  • HTML-innhold som er spesifikk for pakken som kan vises i begynnelsen og mot slutten av distribusjonsprosessen. Dette innholdet kan være nyttig for å gi en beskrivelse av løsninger og filer som distribueres i pakken.

Obs!

Det finnes en annen pakketype kalt en programtilleggspakke. Denne pakketypen er for programtilleggsavhengige samlinger og har ingen relasjon til Package Deployer-pakker.

Forutsetning

  • Kontroller at du har alle løsningene og alle de andre filene klare som du vil ha med i pakken.
  • Visual Studio 2019 eller nyere eller Visual Studio Code.

Prosessoversikt

Utfør følgende trinn for å opprette en Package Deployer-pakke.

  • Opprett et Visual Studio- eller MSBuild-prosjekt
  • Legg til løsninger og andre filer i prosjektet
  • Oppdater angitte HTML-filer (valgfritt)
  • Angi konfigurasjonsverdier for pakken
  • Definer egendefinert kode for pakken
  • Bygg og distribuer pakken

Denne fremgangsmåten er beskrevet nærmere i denne artikkelen.

Opprett et pakkeprosjekt

Det første trinnet er å opprette et Visual Studio- eller MSBuild-prosjekt for pakken. For å kunne gjøre dette må du ha én av to tilgjengelige verktøyutvidelser installert på utviklingsdatamaskinen. Hvis du bruker Visual Studio Code, installerer du Microsoft Power Platform CLI. Hvis du bruker Visual Studio 2019, installerer du i stedet Power Platform-verktøy for Visual Studio. Utvidelsen Power Platform Tools er for øyeblikket bare tilgjengelig for Visual Studio 2019. Det opprettede prosjektet kan imidlertid bygges ved hjelp av Visual Studio 2019 eller senere.

Velg den aktuelle fanen nedenfor for å finne ut hvordan du oppretter et prosjekt med ønsket verktøyutvidelse. Begge verktøyene gir prosjektet et lignende format.

Kjør kommandoen pac package init for å opprette den første pakken. Mer informasjon: pac package

pac package init help
pac package init --outputDirectory DeploymentPackage

De påfølgende CLI-utdataene inneholder mappene og filene som vises nedenfor. Mappenavnet «DeploymentPackage» ble brukt her som eksempel.

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

I det opprettede prosjektet finner du ImportConfig.xml-konfigurasjonsfilen i PkgAssets-mappen og PackageImportExtension.cs-filen. Du endrer disse filene som beskrevet senere i denne artikkelen.

Legg til pakkefiler

Etter at du har opprettet et pakkeprosjekt, kan du begynne å legge til løsninger og andre filer i dette prosjektet.

Når du bruker CLI, kan du legge til eksterne pakker, løsninger og referanser i pakkeprosjektet ved hjelp av en av underkommandoene add. Angi pac package help for å vise listen over underkommandoer. La oss legge til en løsning i 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.

Konfigurer pakken

  1. Definer pakkekonfigurasjonen ved å legge til informasjon om pakken i filen ImportConfig.xml i prosjektet. Åpne filen for redigering. Følgende liste inneholder informasjon om hver parameter og node i konfigurasjonsfilen.

    installsampledata
    True eller false. Hvis true, installeres eksempeldata til Dataverse-forekomst. Disse dataene er de samme eksempeldataene du kan installere fra Innstillinger>Databehandling-området i Dataverse.

    waitforsampledatatoinstall
    Sann eller usann. Hvis sann, og hvis installsampledata også er satt til sann, venter på at eksempeldata skal installeres før pakken distribueres.

    Obs!

    Kontroller at du angir installsampledata til sann hvis du setter waitforsampledatatoinstall til usann.

    agentdesktopzipfile
    Filnavnet til zip-filen som skal pakkes ut. Hvis du angir et ZIP-filnavn her, legges det til et skjermbilde under pakkedistribusjonsprosessen der du blir bedt om å velge et sted der du vil pakke ut innholdet i filen.

    Dette attributtet brukes vanligvis ved opprettelse av pakker for Unified Service Desk for Dynamics 365. Hvis du vil ha mer informasjon om Unified Service Desk, se Administrasjonsveiledning for Unified Service Desk for Dynamics 3.0.

    agentdesktopexename
    Navnet på exe-eller MSI-filen i zip-filen eller en URL-adresse som skal startes på slutten av distribusjons prosessen.

    Dette attributtet brukes vanligvis ved opprettelse av pakker for Unified Service Desk.

    crmmigdataimportfile
    Filnavnet på standard konfigurasjonsdatafilen (.zip) eksportert ved hjelp av verktøyet for konfigurasjonsoverføring.

    • Du kan også importere en lokalisert versjon av konfigurasjonsdatafilen basert på ID-en for nasjonale innstillinger (LCID) som er angitt ved hjelp av nye kjøretidsinnstillinger, mens Package Deployer kjøres. Bruk <cmtdatafile>-noden (forklart senere) til å angi de lokaliserte versjonene av konfigurasjonsdatafilen i en pakke, og bruk deretter OverrideConfigurationDataFileLanguage-metoden (forklart senere) til å angi logikken for importering av konfigurasjonsdatafilen basert på ID-en for nasjonal innstilling som er angitt ved hjelp av kjøretidsinnstillingene. Du kan ikke importere mer enn én konfigurasjonsdatafil med en pakke om gangen.

    • For Dataverse (lokal), hvis konfigurasjonsdatafilen inneholder brukerinformasjon, og både kilde- og målforekomster av Dataverse er i samme Active Directory-domene, importeres brukerinformasjonen til målforekomsten av Dataverse. Hvis du vil importere brukerinformasjon til en Dataverse-forekomst (lokal) i et annet domene, må du inkludere brukertilordningsfilen (xml) generert ved hjelp av verktøyet for konfigurasjonsoverføring i prosjektet, og deretter angir du det sammen med konfigurasjonsdatafilen ved å bruke usermapfilename-attributtet i <cmtdatafile>-noden som forklart senere. Brukerinformasjon kan ikke importeres til Dataverse-forekomster.
      <solutions>-node
      Inneholder en matrise med <configsolutionfile>-noder som beskriver løsningene som skal importeres. Rekkefølgen til løsningene under denne noden angir i hvilken rekkefølge løsningene skal importeres i målforekomsten av Dataverse.

      <configsolutionfile>-node
      Bruk denne noden under <solutions>-noden til å angi de enkelte løsningene og følgende informasjon for hver løsning som skal importeres:

    • solutionpackagefilename: Angi zip-filnavnet for løsningen. Obligatorisk.

    • overwriteunmanagedcustomizations: Angi om eventuelle uadministrerte tilpassinger skal overskrives når du importerer en løsning som allerede finnes i målforekomsten av Dynamics 365. Dette attributtet er valgfritt, og hvis du ikke angir dette attributtet, opprettholdes de uadministrerte tilpassingene i den eksisterende løsningen på målforekomsten av Dynamics 365 som standard.

    • publishworkflowsandactivateplugins: Angi om arbeidsflyter skal publiseres og plugin-moduler aktiveres i målforekomsten av Dynamics 365 etter at løsningen er importert. Dette attributtet er valgfritt, og hvis du ikke angir dette attributtet, blir arbeidsflytene publisert som standard, og programtillegg blir aktivert etter at løsningen er importert i målforekomsten av Dynamics 365.

      Du kan legge til flere løsningsfilnavn i en pakke ved å legge til like mange <configsolutionfile>-noder. Hvis du for eksempel vil at treløsningsfiler skal importeres, legger du dem til som vist nedenfor:

    
    <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
    Inneholder en matrise med <configimportfile>- og <zipimportdetails>-noder som brukes til å beskrive henholdsvis enkeltfiler og zip-filer som skal importeres.

    <configimportfile>-node
    Bruk denne noden under <configimportfile>-noden for å beskrive en fil som skal importeres til Dataverse. Du kan legge til flere filer i en pakke ved å legge til like 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 finner du en liste over støttede attributter:

    Attributt Bekrivelse
    filename Navnet på filen som inneholder importdataene. Hvis filen er en zip-fil, må en <zipimportdetails>-node vises med en <zipimportdetail>-node for hver fil i zip-filen.
    filetype Denne verdien kan være CSV, XML eller zip.
    associatedmap Navnet på Dataverse-datatilordningen for import som skal brukes med denne filen. Hvis tom, gjøres forsøk på å bruke det systemgitte datatilordningsnavnet for import for denne filen.
    importtoentity Kan være navnet på exe-filen i zip-filen, en URL-adresse eller en MSI-fil for å gi en kobling for å starte på filslutten av prosessen.
    datadelimiter Navn på dataskilletegn brukt i importfilen. Gyldige verdier er enkle anførselstegn eller doble anførselstegn.
    fielddelimiter Navn på feltskilletegnet brukt i importfilen. Gyldige verdier er komma eller kolon, eller enkle anførselstegn.
    enableduplicatedetection Angir om duplikatregistreringsregler skal aktiveres for dataimport. Gyldige verdier er sann eller usann.
    isfirstrowheader Brukes til å angi at den første raden i importfilen inneholder feltnavnene. Gyldige verdier er true eller false.
    isrecordownerateam Angir om eieren av oppføringen i import skal være et team. Gyldige verdier er true eller false.
    owneruser Angir bruker-ID-en som skal eie oppføringene. Standardverdien er brukeren som for øyeblikket er logget på.
    waitforimporttocomplete Hvis true, venter systemet på at importen skal fullføres før det fortsetter. Hvis false, setter det jobbene i kø og går videre.

    <zipimportdetails>-node
    Denne noden inneholder en matrise med <zipimportdetail>-noder som beskriver filene som er inkludert i en zip-fil som brukes til å importere til Dynamics 365.

    <zipimportdetail>-node
    Bruk denne noden under <zipimportdetails>-noden til å gi informasjon om en enkelt fil i en zip-fil som er angitt i <configimportfile>-noden.

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

    Støttede attributter vises nedenfor:

    Attributt Bekrivelse
    filename Navnet på filen som inneholder importdataene.
    filetype Denne verdien kan være CSV eller XML.
    importtoentity Kan være navnet på exe-filen i zip-filen, en URL-adresse eller en MSI-fil for å gi en kobling for å starte på filslutten av prosessen.

    <filesmapstoimport>-node
    Denne noden inneholder en matrise med <configmapimportfile>-noder som skal importeres. Rekkefølgen på tilordningsfilene i denne noden angir i hvilken rekkefølge de skal importeres. Hvis du vil ha informasjon om datatilordninger, kan du se Opprette datatilordninger for import.

    <configimportmapfile>-node
    Bruk denne noden under <filesmapstoimport>-noden til å gi informasjon om en enkelt tilordningsfil som skal importeres i Dataverse.

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

    <cmtdatafiles>-node
    Denne noden inneholder en matrise med <cmtdatafile>-noder som inneholder lokalisert versjon av konfigurasjonsdatafilen som skal importeres.

    <cmtdatafile>-node
    Bruk denne noden under <cmtdatafiles>-noden til å angi de lokaliserte konfigurasjonsdatafilene sammen med ID for nasjonale innstillinger (obligatorisk) og tilordningsfilen for brukerinformasjon (valgfritt). Eksempel:

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

    Du kan definere den egendefinerte logikken i OverrideConfigurationDataFileLanguage-metoden (forklart senere) for å importere en oversatt konfigurasjonsdatafil i stedet for standarden som er angitt i crmmigdataimportfile basert på verdien for ID for nasjonale innstillinger (LCID) som er angitt ved hjelp av innstillingene for kjøretid (forklart senere).

  2. Velg Lagre alle.

    Følgende XML representerer innholdet i eksempelfilen 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>  
    
    

Legg til egendefinert kode

Du kan legge til egendefinert kode som kjører før, under og etter at pakken er importert til et miljø. Følg instruksjonene nedenfor for å gjøre dette.

  1. Rediger filen PackageTemplate.cs (eller PackageImportExtension.cs) i rotmappen for prosjektet.

  2. I C#-filen kan du gjøre følgende:

    1. Angi en egendefinert kode som skal kjøres når pakken er initialisert i definisjonen for overstyringsmetode for InitializeCustomExtension.

      Denne metoden kan brukes til å la brukere bruke kjøretidsparameterne under kjøring av en pakke. Som utvikler kan du legge til støtte for alle kjøretidsparametere i pakken ved å bruke RuntimeSettings-egenskapen så lenge du har kode som behandler den basert på brukerinndataene.

      Eksempelkoden nedenfor aktiverer for eksempel en kjøretidsparameter kalt SkipChecks for pakken som har to mulige verdier: true eller false. Eksempelkoden kontrollerer om brukeren har angitt eventuelle kjøretidsparametere under kjøring av Package Deployer (enten ved hjelp av kommandolinjen eller PowerShell), og behandler deretter informasjonen tilsvarende. Hvis det ikke er angitt en kjøretidparameter for brukeren mens pakken kjører, vil verdien av RuntimeSettings-egenskapen være 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 koden gjør at administratoren kan bruke kommandolinjen eller Import-CrmPackage til å angi om sikkerhetskontrollene skal hoppes over mens Package Deployer-verktøyet kjøres for å importere pakken. Mer informasjon: Distribuere pakker ved hjelp av Package Deployer og Windows PowerShell

    2. Angi en egendefinert kode som skal kjøres før løsningene importeres i definisjonen av overstyringsmetode for PreSolutionImport for å angi om du vil vedlikeholde eller overskrive tilpassinger mens du oppdaterer den angitte løsningen i en målforekomst av Dataverse, og om du automatisk vil aktivere plugin-moduler og arbeidsflyter.

    3. Bruk definisjonen for overstyringsmetoden for RunSolutionUpgradeMigrationStep til å utføre datatransformasjon eller oppgradering mellom to versjoner av en løsning. Denne metoden kalles bare hvis løsningen du importerer, allerede finnes i Dataverse-målforekomsten.

      Denne funksjonen forventer følgende parametere:

      Parameter Beskrivelse
      solutionName Navnet på løsningen
      oldVersion Versjonsnummer for den gamle løsningen
      newVersion Versjonsnummer for den nye løsningen
      oldSolutionId GUID for den gamle løsningen.
      newSolutionId GUID for den nye løsningen.
    4. Angi en egendefinert kode som skal kjøres før løsningsimporten er fullført i overstyringsdefinisjonen for BeforeImportStage-metoden. Eksempeldataene og noen flate filer for løsninger som er angitt i ImportConfig.xml-filen, importeres før løsningsimporten fullføres.

    5. Overstyr det valgte språket for konfigurasjonsdataimport ved hjelp av definisjonen av overstyringsmetode for OverrideConfigurationDataFileLanguage. Hvis angitt ID for nasjonale innstillinger (LCID) for det angitte språket ikke finnes i listen over tilgjengelige språk i pakken, importeres standard datafil.

      Du angir tilgjengelige språk for konfigurasjonsdataene i <cmtdatafiles>-noden i ImportConfig.xml-filen. Standard importfil for konfigurasjonsdata er angitt i crmmigdataimportfile-attributtet i ImportConfig.xml-filen.

      Det kan være effektiv å hoppe over datakontroller (OverrideDataImportSafetyChecks = true) her hvis du er sikker på at Dataverse-målforekomsten ikke inneholder data.

    6. Angi en egendefinert kode som skal kjøres etter at løsningsimporten er fullført i overstyringsdefinisjonen for AfterPrimaryImport>-metoden. De gjenværende flate filene som ikke ble importert tidligere før løsningsimporten startet, blir importert nå.

    7. Endre standardnavnet på pakkemappen til pakkenavnet du vil ha. Dette gjør du ved å gi nytt navn til mappen PkgFolder (eller PkgAssets) i Løsningsutforsker-ruten og deretter redigere returverdien under egenskapen 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. Endre pakkenavnet ved å redigere returverdien under GetNameOfImport-egenskapen.

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

      Denne returnerte verdien er navnet på pakken som vises på pakkeutvalgssiden i Dynamics 365 Package Deployer-veiviseren.

    9. Endre pakkebeskrivelsen ved å redigere returverdien under GetImportPackageDescriptionText-egenskapen.

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

      Denne returnerte verdien er pakkebeskrivelsen som vises sammen med pakkenavnet på pakkeutvalgssiden i Package Deployer-veiviseren.

    10. Endre det lange pakkenavnet ved å redigere returverdien under GetLongNameOfImport-egenskapen.

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

      Pakkens lange navn vises på neste side etter at du har valgt pakken som skal installeres.

  3. I tillegg er følgende funksjoner og variabler tilgjengelige for pakken:

    Navn Type Beskrivelse
    CreateProgressItem(String) Function Brukes til å opprette et nytt fremdriftelement i brukergrensesnittet (UI).
    RaiseUpdateEvent(String, ProgressPanelItemStatus) Function Brukes til å oppdatere fremdriften som ble opprettet av kallet til CreateProgressItem(String).

    ProgressPanelItemStatus er en opplisting med følgende verdier:

    Arbeider = 0
    Fullført = 1
    Mislykket = 2
    Advarsel = 3
    Ukjent = 4
    RaiseFailEvent(String, Exception) Function Brukes til å angi at gjeldende statusimport er mislykket med en unntaksmelding.
    IsRoleAssoicatedWithTeam(Guid, Guid) Function Brukes til å avgjøre om en rolle er tilknyttet et bestemt team.
    IsWorkflowActive(Guid) Function Brukes til å avgjøre om en angitt arbeidsflyt er aktiv.
    PackageLog Klassepeker En peker til grensesnittet for initialisert logging for pakken. Dette grensesnittet brukes av en pakke til å logge meldinger og unntak til pakkeloggfilen.
    RootControlDispatcher Egenskap Et fordelingsgrensesnitt som brukes til å tillate at kontrollen gjengir sitt eget brukergrensesnitt under pakkedistribusjon. Bruk dette grensesnittet til å pakke alle grensesnittelementer eller kommandoer. Det er viktig å kontrollere denne variabelen for nullverdier før du bruker den, fordi det kan hende at den ikke er satt til en verdi.
    CrmSvc Egenskap En peker til CrmServiceClient-klasse som gjør at en pakke kan kommunisere med Dynamics 365 innenfra pakken. Bruk denne pekeren til å utføre SDK-metoder og andre handlinger i overstyrte metoder.
    DataImportBypass Egenskap Angi om Dynamics 365 Package Deployer skal hoppe over alle dataimportoperasjoner, for eksempel import av Dataverse-eksempeldata, flate fildata og data eksportert fra verktøyet for konfigurasjonsoverføring. Angi usann eller usann. Standard er false.
    OverrideDataImportSafetyChecks Egenskap Angi om Dynamics 365 Package Deployer skal hoppe over noen av sikkerhetskontrollene, noe som bidrar til å forbedre importytelsen. Angi true eller false. Standard er false.

    Du bør bare angi denne egenskapen til true hvis Dataverse-målforekomsten ikke inneholder noen data.
  4. Lagre prosjektet. Det neste trinnet er å bygge pakken.

Bygg og distribuer

De følgende delene beskriver hvordan du bygger og distribuerer en pakke.

Build

Å bygge pakken er beskrevet nedenfor avhengig av hvilket verktøy du bruker.

Hvis du vil bygge en pakke opprettet med CLI, kan du laste inn .csproj-filen i Visual Studio, men i stedet skal vi bruke DotNet-kommandoen og MSBuild. Eksemplet nedenfor forutsetter at arbeidsmappen inneholder filen *.csproj.

> dotnet publish

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

Du kan eventuelt se på detaljene for den bygde pakken.

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

Pakken din består av følgende filer i mappen <Project>\Bin\Debug.

  • <PackageName>-mappe: Navnet på mappen er det samme som det du endret for navnet på pakkemappen i trinn 2.g i delen Legg til egendefinert kode. Denne mappen inneholder alle løsninger, konfigurasjonsdata, flate filer og alt innhold for pakken.

Obs!

Det kan hende at du ser en .NET-mappe (for eksempel net472) som inneholder en pdpublish-mappe. DLL-filen og andre prosjektfiler ligger i denne pdpublish-mappen.

  • <PackageName>.dll: Samlingen inneholder den egedefinerte koden for pakken. Som standard er navnet på samlingen det samme som prosjektnavnet.

Distribuere

Etter at du har opprettet en pakke, kan du distribuere den i Dataverse-forekomsten ved å bruke Package Deployer-verktøyet, Windows PowerShell eller en CLI-kommando.

  • Hvis du vil distribuere ved hjelp av Package Deployer-verktøyet, laster du først ned verktøyet som beskrevet i Dataverse-utviklingsverktøy. Deretter følger du den detaljerte informasjonen om pakkedistribusjon i artikkelen Distribuer pakker ved å bruke Package Deployer eller Windows PowerShell.

  • Hvis du vil distribuere ved hjelp av CLI, bruker du kommandoen pac package deploy.

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

    Obs!

    Hvis du vil distribuere en pakke i et målmiljø ved hjelp av CLI, må du først konfigurere en godkjenningsprofil og velge en organisasjon. Mer informasjon: pac auth create, pac org select

Beste fremgangsmåter

Nedenfor finner du noen anbefalte fremgangsmåter du kan følge når du arbeider med Package Deployer-pakker.

Opprettelse av pakker

Når utviklere oppretter pakker, må de gjøre følgende:

  • Kontroller at pakkesamlinger signeres.

Distribusjon av pakker

Under distribusjon av pakker må Dataverse-administratorer gjøre følgende:

  • Bruk signerte pakkesamlinger, slik at du kan spore en samling tilbake til kilden.
  • Test pakken i en førproduksjonsforekomst, fortrinnsvis et speilbilde av produksjonsforekomsten, før den kjøres på en produksjonsforekomst.
  • Sikkerhetskopier produksjonsforekomsten før en pakkedistribusjon.

Se også

Løsningspakkeprogram (verktøy)