Pakketten maken voor het hulpprogramma Package Deployer

Met Package Deployer kunnen beheerders pakketten implementeren op Microsoft Dataverse-exemplaren. Een Package Deployer-pakket kan bestaan uit enkele of alle van de volgende onderdelen:

  • Een of meer Dataverse-oplossingsbestanden.
  • Platte bestanden of geëxporteerde configuratiegegevensbestanden uit het hulpprogramma voor configuratiemigratie. Zie Configuratiegegevens verplaatsen tussen exemplaren en organisaties met het hulpprogramma voor configuratiemigratie voor meer informatie over dit hulpprogramma.
  • Aangepaste code die kan worden uitgevoerd voor, tijdens of na de implementatie voor het Dataverse-exemplaar.
  • HTML-inhoud specifiek voor het pakket die aan het begin en het einde van het installatieproces kan worden weergeven. Deze inhoud kan handig zijn als u een beschrijving wilt geven van de oplossingen en bestanden die in het pakket worden geïnstalleerd.

Notitie

Er is een ander pakkettype dat invoegtoepassingspakket wordt genoemd. Dat type pakket is voor Invoegtoepassingsafhankelijke assembly's en heeft geen relatie met Package Deployer-pakketten.

Vereisten

  • Zorg ervoor dat u alle oplossings- en andere bestanden bij de hand hebt die u in het pakket wilt opnemen.
  • Visual Studio 2019 of later, of Visual Studio Code.

Procesoverzicht

Voer de volgende stappen uit om een Package Deployer-pakket te maken.

  • Een Visual Studio- of MSBuild-project maken
  • Oplossingen en andere bestanden toevoegen aan het project
  • Aangeleverde HTML-bestanden bijwerken (optioneel)
  • Configuratiewaarden opgeven voor het pakket
  • Aangepaste code definiëren voor het pakket
  • Het pakket bouwen en implementeren

Deze stappen worden in dit artikel in detail beschreven.

Een pakketproject maken

De eerste stap is het maken van een Visual Studio- of MSBuild-project voor het pakket. Hiertoe moet u een van de twee beschikbare toolextensies op uw ontwikkelcomputer hebben geïnstalleerd. Bij gebruik van Visual Studio Code installeert u Microsoft Power Platform CLI. Anders, bij gebruik van Visual Studio 2019, installeert u Power Platform Tools voor Visual Studio. De Power Platform tools-extensie is momenteel alleen beschikbaar voor Visual Studio 2019. Het gemaakte project kan echter worden gebouwd met Visual Studio 2019 of later.

Selecteer het juiste tabblad hieronder om erachter te komen hoe u een project kunt maken met de gewenste toolextensie. Beide tools voeren het project in een vergelijkbare indeling uit.

Voer de opdracht pac package init uit om het initiële pakket te maken. Meer informatie: pac-pakket

pac package init help
pac package init --outputDirectory DeploymentPackage

De resulterende CLI-uitvoer bevat de onderstaande mappen en bestanden. De mapnaam "DeploymentPackage" is hier als voorbeeld gebruikt.

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

Zoek in het gemaakte project het configuratiebestand 'ImportConfig.xml' in de map 'PkgAssets', en het bestand 'PackageImportExtension.cs'. U wijzigt deze bestanden zoals verderop in dit artikel wordt beschreven.

Pakketbestanden toevoegen

Nadat u een pakketproject hebt gemaakt, kunt u beginnen met het toevoegen van oplossingen en andere bestanden aan dat project.

Wanneer u de CLI gebruikt, kunt u externe pakketten, oplossingen en verwijzingen toevoegen aan uw pakketproject met behulp van een van de subopdrachten add. Voer pac package help in om de lijst met subopdrachten te bekijken. Laten we een oplossing aan ons pakket gaan toevoegen.

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

Het pakket configureren

  1. Definieer de pakketconfiguratie door informatie over uw pakket toe te voegen in het bestand ImportConfig.xml in het project. Open het bestand om dit te bewerken. De volgende lijst bevat informatie over elke parameter en knooppunt in het configuratiebestand.

    installsampledata
    True of false. Als true, installeert voorbeeldgegevens naar exemplaar Dataverse. Dit zijn dezelfde voorbeeldgegevens die u in het gebied Instellingen>Gegevensbeheer in Dataverse kunt installeren.

    waitforsampledatatoinstall
    waar of onwaar. Als waar, en als ook de installsampledata zijn ingesteld op waar, wacht u tot de voorbeeldgegevens zijn geïnstalleerd alvorens het pakket te distribueren.

    Notitie

    Let erop dat u de optie installsampledata instelt op true wanneer u waitforsampledatatoinstall instelt op true.

    agentdesktopzipfile
    Bestandsnaam of zip-bestand om uit te pakken. Als u een zip-bestand en bestandsnaam hier opgeeft, wordt er een scherm tijdens het installatieproces van het pakket toegevoegd, waarin u wordt voorgesteld om een locatie te selecteren waar u de inhoud van het bestand uit wilt pakken.

    Dit kenmerk wordt vaak gebruikt voor het maken van pakketten voor Unified Service Desk voor Dynamics 365. Voor meer informatie over Unified Service Desk raadpleegt u Beheerhandleiding voor Unified Service Desk 3.0.

    agentdesktopexename
    Naam van het EXE- of MSI-bestand in het zipbestand of een URL die aan het einde van de installatieprocedure moet worden aangehaald.

    Dit kenmerk wordt vaak gebruikt voor het maken van pakketten voor Unified Service Desk.

    crmmigdataimportfile
    Bestandsnaam van het standaardconfiguratiegegevensbestand (.zip) dat is geëxporteerd met het hulpprogramma voor configuratiemigratie.

    • U kunt een gelokaliseerde versie van het configuratiegegevensbestand ook importeren op basis van de landinstellingen-ID, opgegeven met nieuwe runtime-instellingen tijdens het uitvoeren van Package Deployer. Gebruik het knooppunt <cmtdatafile> (later uitgelegd) om de gelokaliseerde versies van het configuratiegegevensbestand in een pakket op te geven en gebruik vervolgens de methode OverrideConfigurationDataFileLanguage (later uitgelegd) om de logica voor het importeren van het configuratiegegevensbestand op te geven op basis van de landinstellingen-ID die is opgegeven met de runtime-instellingen. U kunt niet meer dan één configuratiegegevensbestand tegelijk importeren met een pakket.

    • Voor Dataverse (on-premises) geldt dat als het configuratiegegevensbestand gebruikersgegevens bevat en de bron- en doelexemplaren van Dataverse zich in hetzelfde Active Directory-domein bevinden, de gebruikersgegevens worden geïmporteerd naar het Dataverse-doelexemplaar. Als u gebruikersgegevens wilt importeren naar een Dataverse-exemplaar (on-premises) in een ander domein, moet u het gebruikerstoewijzingsbestand (.xml) opnemen dat met het hulpprogramma voor configuratiemigratie in uw project is gegenereerd en dit samen met het configuratiegegevensbestand opgeven met het kenmerk usermapfilename in het knooppunt <cmtdatafile> dat later wordt besproken. De gebruikersgegevens kunnen niet worden geïmporteerd in exemplaren van Dataverse.
      <solutions>-knooppunt
      Bevat een matrix van <configsolutionfile> knooppunten die de oplossingen om te importeren beschrijven. De volgorde van oplossingen onder dit knooppunt geeft de volgorde aan waarin de oplossingen in het Dataverse-exemplaar worden geïmporteerd.

      <configsolutionfile>-knooppunt
      Gebruik dit knooppunt onder het knooppunt <solutions> om de afzonderlijke oplossingen en de volgende gegevens op te geven voor elke oplossing die u wilt importeren:

    • solutionpackagefilename: geef de naam van het zip-bestand van de oplossing op. Vereist.

    • overwriteunmanagedcustomizations: geef hier op of andere onbeheerde aanpassingen moeten worden overschreven bij het importeren van een oplossing die al in het doelexemplaar van Dynamics 365 bestaat. Dit kenmerk is optioneel, en als u dit kenmerk niet opgeeft, worden standaard de onbeheerde aanpassingen in bestaande oplossingen bewaard op het doelexemplaar van Dynamics 365.

    • publishworkflowsandactivateplugins: geef op of u workflows wilt publiceren en invoegtoepassingen in het doelexemplaar van Dynamics 365 wilt activeren nadat de oplossing is geïmporteerd. Dit kenmerk is optioneel, en als u dit kenmerk niet opgeeft, worden standaard de workflows gepubliceerd en de invoegtoepassingen gestart nadat de oplossing in het doelexemplaar van Dynamics 365 is geïmporteerd.

      U kunt meerdere oplossingbestandsnamen in een pakket toevoegen door een evengroot aantal <configsolutionfile> knooppunten toe te voegen. Bijvoorbeeld, als u wilt dat drie oplossingsbestanden worden geïmporteerd, voegt u deze toe zoals hieronder weergegeven:

    
    <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>-knooppunt
    Bevat een matrix van de knooppunten <configimportfile> en <zipimportdetails> die worden gebruikt om respectievelijk individuele bestanden en .zip-bestanden beschrijft om te importeren.

    <configimportfile>-knooppunt
    Met dit knooppunt onder het knooppunt <configimportfile> beschrijft u een bestand dat in Dataverse moeten worden geïmporteerd. U kunt meerdere bestanden in een pakket toevoegen door een evengroot aantal <configimportfile> knooppunten toe te voegen.

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

    Hieronder vindt u een lijst met ondersteunde kenmerken:

    Kenmerk Omschrijving
    filename De naam van het bestand dat de importgegevens bevat. Als het bestand een ZIP-bestand is, moet een <zipimportdetails>-knooppunt met een <zipimportdetail>-knooppunt voor elk van de bestanden in het ZIP-bestand aanwezig zijn.
    filetype Deze waarde kan csv, xml of zip zijn.
    associatedmap Naam van de Dataverse importgegevenstoewijzing om met dit bestand te gebruiken. Indien leeg, wordt geprobeerd om de naam van de importgegevenstoewijzing voor dit bestand bepaald door het systeem te gebruiken.
    importtoentity Kan de naam van het uitvoeringsbestand in het ZIP-bestand, een URL of een MSI-bestand zijn om een koppeling te bieden om aan het einde van het proces aan te roepen.
    datadelimiter Naam van het gegevensscheidingsteken dat in het importbestand wordt gebruikt. Geldige waarden zijn enkele aanhalingstekens of dubbele aanhalingstekens.
    fielddelimiter Naam van het veldscheidingsteken dat in het importbestand wordt gebruikt. Geldige waarden zijn komma's, dubbele punten of enkele aanhalingstekens.
    enableduplicatedetection Geeft aan of duplicaatdetectieregels tijdens gegevensimport moet worden ingeschakeld. De geldige waarden zijn waar of onwaar.
    isfirstrowheader Gebruikt om aan te duiden dat de eerste rij in het importbestand de veldnamen bevat. Geldige waarden zijn true of false.
    isrecordownerateam Geeft aan of de eigenaar van het record op importeren een team moet zijn. Geldige waarden zijn true of false.
    owneruser Wijs op de gebruikers-ID van wie de records moeten zijn. De standaardwaarde is de momenteel aangemelde gebruiker.
    waitforimporttocomplete Als true, dan wacht het systeem tot de voltooiing van de import alvorens verder te gaan. Als false, dan plaatst het de taken in de wachtrij en gaat het verder.

    <zipimportdetails>-knooppunt
    Dit knooppunt bevat een matrix van <zipimportdetail>-knooppunten die de bestanden van een zip-bestand beschrijven dat wordt gebruikt om te importeren naar Dynamics 365.

    <zipimportdetail>-knooppunt
    Gebruik dit knooppunt onder het knooppunt <zipimportdetails> om informatie over een afzonderlijke bestand in een zip-bestand te leveren dat is opgegeven in het knooppunt <configimportfile>.

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

    Ondersteunde kenmerken vindt u in de onderstaande lijst:

    Kenmerk Omschrijving
    filename De naam van het bestand dat de importgegevens bevat.
    filetype Deze waarde kan csv of xml zijn.
    importtoentity Kan de naam van het exe in het zip-bestand, een URL, of een .msi-bestand zijn om een koppeling te bieden om aan het einde van het proces aan te roepen.

    <filesmapstoimport>-knooppunt
    Dit knooppunt bevat een matrix van knooppunten <configmapimportfile> om te importeren. De volgorde van de toegewezen bestanden in dit knooppunt geeft de volgorde waarin ze worden geïmporteerd. Zie voor informatie over gegevenskaarten Gegevensmappen maken voor import.

    <configimportmapfile>-knooppunt
    Gebruik dit knooppunt onder het knooppunt <filesmapstoimport> om informatie te leveren over een afzonderlijk toegewezen bestand om te importeren in Dataverse.

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

    <cmtdatafiles>-knooppunt
    Dit knooppunt bevat een matrix van <cmtdatafile>-knooppunten die de gelokaliseerde versie van het te importeren configuratiegegevensbestanden bevatten.

    <cmtdatafile>-knooppunt
    Gebruik dit knooppunt onder het <cmtdatafiles>-knooppunt om de gelokaliseerde configuratiegegevensbestanden, de landinstellingen-ID (vereist) en het toewijzingsbestand met de gebruikersgegevens (optioneel) op te geven. Bijvoorbeeld:

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

    U kunt uw aangepaste logica opgeven in de methode OverrideConfigurationDataFileLanguage (later uitgelegd) om in plaats van de standaardversie een gelokaliseerd configuratiegegevensbestand te gebruiken (opgegeven in crmmigdataimportfile) op basis van de opgegeven waarde voor de landinstellingen-id (LCID) in de runtime-instellingen (later uitgelegd).

  2. Selecteer Alle opslaan.

    De volgende xml geeft een voorbeeld van de inhoud van het ImportConfig.xml-bestand.

    <?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>  
    
    

Aangepaste code toevoegen

U kunt aangepaste code toevoegen die wordt uitgevoerd voor, tijdens en nadat het pakket in een omgeving is geïmporteerd. Hiertoe volgt u deze instructies.

  1. Bewerk het bestand PackageTemplate.cs (of PackageImportExtension.cs) in de hoofdmap van het project.

  2. In het C#-bestand kunt u:

    1. Aangepaste code invoeren om uit te voeren wanneer het pakket is in geïnitialiseerd in de negeermethodedefinitie van InitializeCustomExtension.

      Met deze methode kunnen gebruikers de runtime-parameters gebruiken terwijl zij een pakket uitvoeren. Als ontwikkelaar kunt u ondersteuning voor alle runtime-parameters aan uw pakket toevoegen door de eigenschap RuntimeSettings te gebruiken, als u code hebt om het te verwerken op basis van de gebruikerinvoer.

      In de volgende voorbeeldcode wordt bijvoorbeeld een runtime-parameter met de naam SkipChecks ingeschakeld voor het pakket, die twee mogelijke waarden heeft: true of false. De voorbeeldcode controleert of de gebruiker runtime-parameters heeft opgegeven bij het uitvoeren van Package Deployer (vanaf de opdrachtregel of vanuit de PowerShell) en verwerkt vervolgens de gegevens. Als geen runtime-parameter door de gebruiker is opgegeven tijdens het uitvoeren van het pakket, wordt de waarde van de eigenschap RuntimeSettings ingesteld op 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");  
      }  
      

      Deze code stelt de beheerder in staat de opdrachtregel of de cmdlet Import-CrmPackage te gebruiken om op te geven of de veiligheidscontroles moeten worden overgeslagen tijdens het uitvoeren van het hulpprogramma Package Deployer om het pakket te importeren. Meer informatie: Pakketten implementeren met Package Deployer en Windows PowerShell

    2. Voer aangepaste code in die moet worden uitgevoerd voordat de oplossingen worden geïmporteerd in de methodeoverschrijvingsdefinitie van PreSolutionImport, om op te geven of u aanpassingen wilt behouden of wilt overschrijven, terwijl de opgegeven oplossing wordt bijgewerkt in een doelexemplaar van Dataverse, en of u invoegtoepassingen en workflows automatisch wilt laten activeren.

    3. Gebruik de overschrijvingsmethodedefinitie van RunSolutionUpgradeMigrationStep om een gegevenstransformatie of upgrade tussen twee versies van een oplossing uit te voeren. Deze methode wordt alleen aangeroepen als de oplossing die u importeert al aanwezig is in het doelexemplaar van Dataverse.

      Deze functie verwacht de volgende parameters:

      Parameter Beschrijving
      solutionName Naam van de oplossing
      oldVersion Versienummer van de oude oplossing
      newVersion Versienummer van de nieuwe oplossing
      oldSolutionId GUID van de oude oplossing.
      newSolutionId GUID van de nieuwe oplossing.
    4. Voer aangepaste code in die moet worden uitgevoerd voordat de import van de oplossing wordt afgerond in de overschrijvingsdefinitie van de methode BeforeImportStage. De voorbeeldgegevens en sommige platte bestanden voor oplossingen die zijn opgegeven in het bestand ImportConfig.xml worden geïmporteerd voordat de import van de oplossing is voltooid.

    5. Overschrijf de momenteel geselecteerde taal voor de import van configuratiegegevens door middel van de methodeoverschrijvingsdefinitie van OverrideConfigurationDataFileLanguage. Als de opgegeven landinstellingen-ID (LCID) van de opgegeven taal niet in de lijst met beschikbare talen in het pakket wordt gevonden, wordt het standaardgegevensbestand geïmporteerd.

      U kunt de beschikbare talen voor de configuratiegegevens opgeven in het knooppunt <cmtdatafiles> in het bestand ImportConfig.xml. Het standaardbestand voor import van standaardgegevens wordt opgegeven in het knooppunt crmmigdataimportfile in het bestand ImportConfig.xml.

      Het overslaan van gegevenscontroles (OverrideDataImportSafetyChecks = true) kan hier nuttig zijn als u zeker weet dat het doelexemplaar van Dataverse geen gegevens bevat.

    6. Voer aangepaste code in die moet worden uitgevoerd nadat de import van de oplossing wordt afgerond in de overschrijvingsdefinitie van de methode AfterPrimaryImport>. De resterende platte bestanden die niet eerder werden geïmporteerd, voordat de import van de oplossing begon, worden nu geïmporteerd.

    7. Wijzig de standaardnaam van uw pakketmap in de gewenste pakketnaam. Hiertoe hernoemt u de map PkgFolder (of PkgAssets) in het deelvenster Oplossingsverkenner en bewerkt u vervolgens de retourwaarde onder de eigenschap 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. Wijzig de pakketnaam door de retourwaarde onder de GetNameOfImport eigenschap te bewerken.

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

      Deze geretourneerde waarde is de naam van uw pakket die verschijnt op de pakketselectiepagina in de wizard Dynamics 365 Package Deployer.

    9. Wijzig de pakketbeschrijving door de retourwaarde onder de GetImportPackageDescriptionText eigenschap te bewerken.

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

      Deze geretourneerde waarde is de pakketbeschrijving die naast de pakketnaam wordt weergegeven op de pakketselectiepagina in de wizard Package Deployer.

    10. Wijzig de lange pakketnaam door de retourwaarde onder de GetLongNameOfImport eigenschap te bewerken.

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

      De lange pakketnaam wordt weergegeven op de volgende pagina nadat u het pakket om te installeren hebt geselecteerd.

  3. Bovendien zijn de volgende functies en de variabelen voor het pakket beschikbaar:

    Naam Type Beschrijving
    CreateProgressItem(String) Functie Gebruikt om een nieuw voortgangitem in de gebruikersinterface (UI) te maken.
    RaiseUpdateEvent(String, ProgressPanelItemStatus) Functie Gebruikt om de voortgang bij te werken gemaakt door de oproep tot CreateProgressItem(String).

    ProgressPanelItemStatus is een opsomming met de volgende waarden:

    Werkt = 0
    Voltooid = 1
    Mislukt = 2
    Waarschuwing = 3
    Onbekend = 4
    RaiseFailEvent(String, Exception) Function Gebruikt om de huidige statusimport met een uitzonderingsbericht te laten mislukken.
    IsRoleAssoicatedWithTeam(Guid, Guid) Functie Gebruikt om te bepalen of een rol met een bepaald team is gekoppeld.
    IsWorkflowActive(Guid) Functie Gebruikt om te bepalen of een bepaalde werkstroom actief is.
    PackageLog Klassenaanwijzer Een aanwijzer voor de geïnitialiseerde interface voor logboekregistratie voor het pakket. Deze interface wordt gebruikt door een pakket om berichten en uitzonderingen op het pakketlogboekbestand te registreren.
    RootControlDispatcher Eigenschappen Een dispatcherinterface die wordt gebruikt om het besturingselement toe te staan om zijn eigen UI weer te geven tijdens de pakketinstallatie. Gebruik deze interface om eventuele UI-elementen of opdrachten te verpakken. Het is belangrijk dat u deze variabele voor nullwaarden controleert voordat deze kan worden gebruikt omdat deze mogelijk al op een waarde is ingesteld.
    CrmSvc Eigenschappen Een aanwijzer naar de klasse CrmServiceClient waarmee een pakket Dynamics 365 vanuit het pakket kan aanspreken. Gebruik deze aanwijzer om SDK-methoden en andere acties in de overschreven methoden uit te voeren.
    DataImportBypass Eigenschappen Geef op of Dynamics 365 Package Deployer alle bewerkingen voor gegevensimport moet overslaan, zoals de import van voorbeeldgegevens voor Dataverse, gegevens in platte bestanden en gegevens die zijn geëxporteerd vanuit het hulpprogramma voor configuratiemigratie. Stel als waarde true of false in. Standaard is false.
    OverrideDataImportSafetyChecks Eigenschappen Geef op of Dynamics 365 Package Deployer enkele veiligheidscontroles moet omzeilen. Dit kan bijdragen aan betere systeemprestaties bij de import. Geef true of false op. Standaard is false.

    U moet deze eigenschap alleen instellen op true, als het doelexemplaar van Dataverse geen gegevens bevat.
  4. Sla uw project op. De volgende stap is het bouwen van het pakket.

Bouwen en implementeren

In de volgende secties wordt beschreven hoe u een pakket bouwt en implementeert.

Build

Het samenstellen van uw pakket wordt hieronder beschreven, afhankelijk van de tool die u gebruikt.

Om een ​​pakket te bouwen dat met de CLI is gemaakt, kunt u het .csproj-bestand in Visual Studio laden, maar in plaats daarvan gaan we de dotnet-opdracht en MSBuild gebruiken. In het onderstaande voorbeeld wordt ervan uitgegaan dat de werkdirectory het *.csproj-bestand bevat.

> dotnet publish

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

U kunt optioneel de details van het gebouwde pakket bekijken.

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

Uw pakket bestaat uit de volgende bestanden onder de map <Project>\Bin\Debug.

  • Map <PackageName>: de mapnaam is dezelfde als de naam die u voor uw pakketmapnaam hebt gewijzigd in stap 2.g van deze sectie Aangepaste code toevoegen. Deze map bevat alle oplossingen, configuratiegegevens, platte bestanden en de inhoud voor uw pakket.

Notitie

Mogelijk ziet u een .NET-map (bijv. net472) met een map pdpublish. Uw DLL en andere projectbestanden bevinden zich in die map pdpublish.

  • <PackageName>.dll: de assembly bevat de aangepaste code voor het pakket. Standaard is de naam van de assembly hetzelfde als de projectnaam.

Implementeren

Nadat u een updatepakket hebt gemaakt, kunt u het installeren op het Dataverse-exemplaar met de Package Deployer-tool, Windows PowerShell of een CLI-opdracht.

  • Als u wilt implementeren met behulp van de Package Deployer-tool, downloadt eerst de tool zoals beschreven in Dataverse-ontwikkelingshulpmiddelen. Volg vervolgens de gedetailleerde informatie over pakketimplementatie in het artikel Pakketten implementeren met Package Deployer of Windows PowerShell.

  • Gebruik de opdracht pac package deploy als u wilt implementeren met behulp van de CLI.

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

    Notitie

    Als u een pakket wilt implementeren in een doelomgeving met behulp van de CLI, moet u eerst een verificatieprofiel instellen en een organisatie selecteren. Meer informatie: pac auth create, pac org select

Aanbevolen procedures

Hieronder vindt u enkele praktische tips die u kunt volgen bij het werken met Package Deployer-pakketten.

Pakketten maken

Bij het maken van pakketten moeten ontwikkelaars:

  • Ervoor zorgen dat pakketassembly's worden ondertekend.

Pakketten implementeren

Bij het implementeren van pakketten moeten Dataverse-beheerders het volgende doen:

  • Aandringen op ondertekende pakketassembly's, zodat u een assembly terug kunt volgen naar de bron.
  • Test het pakket op een preproductie-exemplaar, bij voorkeur een spiegelbeeld van het productie-exemplaar, voordat u het op een productie-exemplaar uitvoert.
  • Een back-up van het productie-exemplaar maken alvorens het pakket te implementeren.

Zie ook

Hulpprogramma Oplossingspakketten maken