Създайте пакети за инструмента Package Deployer

Package Deployer позволява на администраторите да разполагат пакети екземпляри на Microsoft Dataverse. Един пакет на Package Deployer може да се състои от някои или всички от следните неща:

  • Един или повече файлове на Dataverse решение.
  • Фиксирани файлове или файлове с конфигурационни данни от Configuration Migration Tool. За повече информация за инструмента вижте Преместване на конфигурационни данни между екземпляри и организации с Configuration Migration Tool.
  • Потребителски код, който може да работи преди, по време или след внедряването на пакет в екземпляр на Dataverse.
  • HTML съдържание, специфично за пакета, което може да се показва в началото и в края на процеса на внедряване. Това съдържание може да бъде полезно, за да се осигури описание на решенията и файлове, които са внедрени в пакета.

Бележка

Има друг тип пакет, наречен пакет с добавки. Този вид пакет е за модули, зависещи от плъгини, и няма връзка с Package Deployer пакети.

Предварителни изисквания

  • Уверете се, че сте подготвили всички решения и други файлове, които искате да включите в пакета.
  • Visual Studio 2019 г. или по-късно, или Visual Studio Код.

Общ преглед на процеса

За да създадете Package Deployer пакет, изпълнете следните стъпки.

  • Създаване на проект на Visual Studio или MSBuild
  • Добавете решения и други файлове към проекта
  • Актуализирайте предоставените HTML файлове (по избор)
  • Посочете конфигурационните стойности за пакета
  • Дефиниране на потребителски код за пакета
  • Изградете и внедрите пакета

Тези стъпки са описани подробно в тази статия.

Създаване на проект за пакет

Първата стъпка е да създадете Visual Studio или MSBuild проект за пакета. За да направите това, трябва да имате едно от двете налични разширения за инструменти, инсталирани на вашия компютър за разработка. Ако използвате Visual Studio Code, инсталирайте Microsoft Power Platform CLI. В противен случай, ако използвате Visual Studio 2019, инсталирайте Power Platform Tools за Visual Studio. Разширението Power Platform за инструменти в момента е достъпно само за Visual Studio 2019 г. Създаденият проект обаче може да бъде изграден с Visual Studio 2019 или по-нова версия.

Изберете съответния раздел по-долу, за да разберете как да създадете проект с помощта на желаното разширение на инструмента. И двата инструмента извеждат проекта в подобен формат.

Изпълнете командата pac package init, за да създадете първоначалния пакет. Повече информация: pac package

pac package init help
pac package init --outputDirectory DeploymentPackage

Полученият CLI изход съдържа папките и файловете, показани по-долу. Името на папката "DeploymentPackage" беше използвано тук като пример.

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

В създадения проект намерете конфигурационния файл ImportConfig.xml в папката PkgAssets и файла PackageImportExtension.cs. Ще промените тези файлове, както е описано по-нататък в тази статия.

Добавяне на пакетни файлове

След като сте създали пакетен проект, можете да започнете да добавяте решения и други файлове към този проект.

Когато използвате CLI, можете да добавяте външни пакети, решения и препратки към вашия пакетен проект, като използвате една от подкомандите add. Въведете pac package help, за да видите списъка с подкоманди. Нека добавим решение към нашия пакет.

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

Конфигуриране на пакета

  1. Определете конфигурацията на пакета, като добавите информация за вашия пакет в ImportConfig.xml файла в проекта. Отворете файла за редактиране. Следващият списък предоставя информация за всеки параметър и възел в конфигурационния файл.

    installsampledata
    True или false. Ако е true, инсталира примерни данни на екземпляра на Dataverse. Тези данни са същите примерни данни, от които можете да инсталирате от областта Настройки>Управление на данни в Dataverse.

    waitforsampledatatoinstall
    Вярно или невярно. Ако е Вярно и ако installsampledata също е настроен на вярно, изчаква да се инсталират примерни данни преди разгръщането на пакета.

    Бележка

    Уверете се, че сте задали installsampledata на вярно, ако настройвате waitforsampledatatoinstall на вярно.

    agentdesktopzipfile
    Име на файла на zip файла за разопаковане. Ако посочите тук име на .zip файл, той добавя екран по време на процеса на внедряване на пакета, който ви подканва да изберете място, където искате да разопаковате съдържанието на файла.

    Този атрибут обикновено се използва за създаване на пакети за Unified Service Desk for Dynamics 365. За повече информация относно Unified Service Desk вижте Ръководство за администриране на Unified Service Desk 3.0.

    agentdesktopexename
    Име на .exe или .msi файла в zip файла или URL адрес, който трябва да бъде извикан в края на процеса на внедряване.

    Този атрибут обикновено се използва за създаване на пакети за Unified Service Desk.

    crmmigdataimportfile
    Име на файла на файла за конфигурация по подразбиране (.zip), експортиран с помощта на Configuration Migration Tool.

    • Можете също така да импортирате локализирана версия на файла с конфигурационни данни въз основа на идентификатора на локал (LCID), зададен с нови настройки на време на изпълнение, докато стартирате Package Deployer. Използвайте <cmtdatafile> възел (обяснено по-късно), за да посочите локализираните версии на файла с конфигурационни данни в пакет и след това да използвате OverrideConfigurationDataFileLanguage метод (обяснен по-нататък) за определяне на логиката за импортиране на файла с конфигурационни данни въз основа на идентификатора на локал, определен с помощта на настройките за изпълнение. Не можете да импортирате повече от един конфигурационен файл с данни с помощта на пакет едновременно.

    • For Dataverse (локален), ако вашият конфигурационен файл с данни съдържа потребителска информация и и двата екземпляра източник и целеви Dataverse екземпляр са в един и същ домейн на Active Directory, информацията за потребителя се импортира в целевия Dataverse екземпляр. За да импортирате потребителска информация в Dataverse (локален) екземпляр от различен домейн, трябва да включите файла на картата на потребителя (.xml), генериран с помощта на Configuration Migration Tool във вашия проект, и да го посочите заедно с файла с данни за конфигурация, като използвате usermapfilename атрибут в <cmtdatafile> възел, обяснен по-късно. Потребителската информация не може да се импортира в Dataverse екземпляри.
      <solutions> възел
      Съдържа масив от <configsolutionfile> възли, които описват решенията за импортиране. Редът на решенията под този възел показва реда, в който ще бъдат импортирани решенията на целевия екземпляр на Dataverse.

      <configsolutionfile> възел
      Използвайте този възел под <solutions> възел, за да посочите отделните решения и следната информация за всяко решение, което ще бъде импортирано:

    • solutionpackagefilename: Укажете името на .zip на вашето решение. Задължително.

    • overwriteunmanagedcustomizations: Посочете дали да презапишете някакви неуправляеми персонализиране при импортиране на решение, което вече съществува в целевия екземпляр Dynamics 365. Този атрибут не е задължителен и ако не зададете този атрибут, по подразбиране незавършените персонализации в съществуващото решение се поддържат в целевия екземпляр на Dynamics 365.

    • publishworkflowsandactivateplugins: Посочете дали да публикувате работни процеси и да активирате приставки в целевия пример Dynamics 365 след импортиране на решението. Този атрибут не е задължителен и ако не зададете да не задавате този атрибут, по подразбиране работните потоци се публикуват и добавките се активират, след като решението се импортира в целевия екземпляр на Dynamics 365.

      Можете да добавите няколко имена на файлове за решение в пакет, като добавите толкова <configsolutionfile> възли. Например, ако искате да бъдат импортирани три файла с решение, добавете ги, както е показано по-долу:

    
    <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> и <zipimportdetails> възли, които се използват за описание на отделни файлове и съответно zip файлове, които трябва да бъдат импортирани.

    <configimportfile> възел
    Използвайте този възел под <configimportfile> възел, за да опише файл, в който да бъде импортиран Dataverse. Можете да добавите няколко файла в пакет, като добавите толкова <configimportfile> възли.

    
    <filestoimport>  
    <configimportfile filename="File.csv"  
    filetype="CSV"  
    associatedmap="FileMap"  
    importtoentity="FileEntity"  
    datadelimiter=""  
    fielddelimiter="comma"  
    enableduplicatedetection="true"  
    isfirstrowheader="true"  
    isrecordownerateam="false"  
    owneruser=""  
    waitforimporttocomplete="true" />  
    <configimportfile filename="File.zip"  
    filetype="ZIP"  
    associatedmap="FileMapName"  
    importtoentity="FileEntity"  
    datadelimiter=""  
    fielddelimiter="comma"  
    enableduplicatedetection="true"  
    isfirstrowheader="true"  
    isrecordownerateam="false"  
    owneruser=""  
    waitforimporttocomplete="true"/>  
    
    </filestoimport>  
    
    

    По-долу е даден списък на поддържаните атрибути:

    Атрибут Описание
    filename Име на файла, който съдържа импортираните данни. Ако файлът е .zip файл, <zipimportdetails> възелът трябва да присъства с <zipimportdetail> възел за всеки файл във .zip файла.
    filetype Тази стойност може да бъде csv, xml или zip.
    associatedmap Име на картата на данни за импортиране на Dataverse, която да използвате с този файл. Ако празното се опитва да използва определеното от системата име на карта за импортиране на данни за този файл.
    importtoentity Може да е името на exe в zip файла или URL адрес, или .msi файл за предоставяне на връзка за извикване в края на процеса.
    datadelimiter Името на разделителя на данни, използван за отделяне на данните в импортирания файл. Валидните стойности са единични кавички или двойни кавички.
    fielddelimiter Името на разделителя на файл, използван за отделяне на данните в импортирания файл. Валидните стойности са запетая или двоеточие, или единична кавичка.
    enableduplicatedetection Посочва дали да се активират правила за откриването на дублиращи се записи по време на импортиране. Валидни стойности са вярно или невярно.
    isfirstrowheader Използва се за означаване, че първият ред на файла за импортиране съдържа имената на полетата. Валидните стойности са true или false.
    isrecordownerateam Указва дали собственикът на записа при импортиране трябва да бъде екип. Валидните стойности са true или false.
    owneruser Посочва потребителския идентификатор, който трябва да притежава записи. Стойността по подразбиране е текущо влезлият потребител.
    waitforimporttocomplete Ако е true, системата чака импортирането да приключи, преди да продължите. Ако е false, тя чака опашки за задачите и продължава напред.

    <zipimportdetails> възел
    Този възел съдържа масив от <zipimportdetail> възли, които описват файловете, включени в zip файл, който се използва за импортиране в Dynamics 365.

    <zipimportdetail> възел
    Използвайте този възел под <zipimportdetails> възел за предоставяне на информация за отделен файл във .zip файл, който е посочен в <configimportfile> възел.

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

    Поддържаните атрибути са изброени по-долу:

    Атрибут Описание
    filename Име на файла, който съдържа импортираните данни.
    filetype Тази стойност може да бъде csv или xml.
    importtoentity Може да е името на exe в zip файла или URL адрес, или .msi файл за предоставяне на връзка за извикване в края на процеса.

    <filesmapstoimport> възел
    Този възел съдържа масив от <configmapimportfile> възли за импортиране. Редът на файловете на картата в този възел показва реда, в който са импортирани. За информация относно картите с данни, вижте Създайте карти с данни за импортиране.

    <configimportmapfile> възел
    Използвайте този възел под <filesmapstoimport> възел за предоставяне на информация за отделен файл с карта, който да импортирате Dataverse.

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

    <cmtdatafiles> възел
    Този възел съдържа масив от <cmtdatafile> възли, който съдържа локализирана версия на конфигурационния файл с данни, който ще се импортира.

    <cmtdatafile> възел
    Използвайте този възел под <cmtdatafiles> възел, за да посочите локализираните файлове с конфигурационни данни, заедно с идентификатора на локал (задължителен) и файла с карта на потребителската информация (незадължително). Например:

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

    Можете да определите вашата персонализирана логика в OverrideConfigurationDataFileLanguage метод (обяснено по-късно) за импортиране на локализиран конфигурационен файл с данни вместо по подразбиране (посочен в crmmigdataimportfile) въз основа на стойността на идентификатора на локал (LCID), зададена с помощта на настройките за изпълнение (обяснено по-нататък).

  2. Изберете Запиши всички.

    Следният xml представя съдържанието на примерен 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>  
    
    

Добавяне на персонализиран код

Можете да добавите персонализиран код, който се изпълнява преди, по време и след като пакетът бъде импортиран в среда. За да го направите, следвайте следните инструкции.

  1. Редактирайте файла PackageTemplate.cs (или PackageImportExtension.cs) в основната папка на проекта.

  2. Във файла на C# можете да:

    1. Въведете персонализиран код, който да се изпълни, когато пакетът се инициализира в дефиницията на метода за отмяна на InitializeCustomExtension.

      Този метод може да се използва, за да позволи на потребителите да използват параметрите на изпълнение, докато изпълняват пакет. Като програмист можете да добавите поддръжка за всеки параметър на изпълнение към вашия пакет, като използвате RuntimeSettings свойство, стига да имате код, за да го обработвате въз основа на въвеждането на потребителя.

      Например, следният примерен код активира параметър за изпълнение, наречен SkipChecks за пакета, който има две възможни стойности: вярна или невярна. Примерният код проверява дали потребителят е посочил параметри на изпълнение по време на работа Package Deployer (или чрез командния ред или PowerShell) и след това съответно обработва информацията. Ако по време на изпълнение на пакета потребителят не е зададен параметър за изпълнение, стойността на RuntimeSettings свойството ще бъде нищожно.

      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");  
      }  
      

      Този код позволява на администратора да използва командния ред или Import-CrmPackage командлет, за да посочите дали да пропуснете проверките за безопасност, докато стартирате инструмента Package Deployer за импортиране на пакета. Повече информация: Внедряване на пакети с помощта на Package Deployer и Windows PowerShell

    2. Въведете персонализиран код, който да се изпълни преди да бъдат импортирани решенията в дефиницията на метода на отмяна на PreSolutionImport, за да зададете дали да поддържате или презаписвате персонализиране, докато актуализирате определеното решение в цел Dataverse например и дали автоматично да активирате приставки и работни процеси.

    3. Използвайте дефиницията на метода за заместване на, за да извършите трансформация на данни или надстройка между две версии на решение Този метод се извиква само ако решението, което импортирате, RunSolutionUpgradeMigrationStep вече присъства в целевия Dataverse екземпляр.

      Тази функция очаква следните параметри:

      Параметър Описание
      solutionName Име на решението
      oldVersion Номер на версията на старото решение
      newVersion Номер на версията на новото решение
      oldSolutionId GUID на старото решение.
      newSolutionId GUID на новото решение.
    4. Въведете персонализиран код за изпълнение, преди завършването на импортирането на решението в дефиницията за отмяна на модела на BeforeImportStage. Примерни данни и някои плоски файлове за решения, посочени във файл ImportConfig.xml, се импортират, преди да завърши импортирането на решение.

    5. Заместване на текущо избрания език за импортиране на конфигурационни данни с помощта на дефиницията на метода за заместване на OverrideConfigurationDataFileLanguage. Ако указаният ИД на езикова променлива (LCID) на указания език не е намерен в списъка с налични езици в пакета, файлът с данни по подразбиране се импортира.

      Вие посочвате наличните езици за конфигурационните данни в <cmtdatafiles> възел в ImportConfig.xml файл. Файлът за импортиране на данни по подразбиране е посочен в crmmigdataimportfile атрибут в ImportConfig.xml файл.

      Пропускането на проверки на данни (OverrideDataImportSafetyChecks = true) може да бъде ефективно тук, ако сте сигурни, че целевият Dataverse екземпляр не съдържа никакви данни.

    6. Въведете персонализиран код за изпълнение, след завършването на импортирането в дефиницията за отмяна на метода AfterPrimaryImport>. Останалите плоски файлове, които не са били импортирани по-рано, преди да започне импортирането на решението, се импортират сега.

    7. Променете името по подразбиране на папката на вашия пакет на името на пакета, което искате. За да направите това, преименувайте папката PkgFolder (или PkgAssets) в прозореца на Solution Explorer и след това редактирайте стойността за връщане в свойството 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. Променете името на пакета, като редактирате стойността за връщане под свойството GetNameOfImport.

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

      Тази върната стойност е името на вашия пакет, което се появява на страницата за избор на пакет в съветника на Dynamics 365 Package Deployer .

    9. Променете описанието на пакета, като редактирате стойността за връщане под свойството GetImportPackageDescriptionText.

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

      Тази върната стойност е описанието на пакета, което се появява до името на пакета на страницата за избор на пакет в съветника Package Deployer .

    10. Променете дългото име на пакета, като редактирате стойността за връщане под свойството GetLongNameOfImport.

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

      Дългото име на пакета се появява на следващата страница, след като сте избрали пакета за инсталиране.

  3. Освен това в пакета са достъпни следните функции и променливи:

    Име Тип Описание
    CreateProgressItem(String) Function Използва се за създаване на нов елемент на прогрес в потребителския интерфейс (UI).
    RaiseUpdateEvent(String, ProgressPanelItemStatus) Function Използва се за актуализиране на напредъка, създаден от повикването до CreateProgressItem(String).

    ProgressPanelItemStatus е enum със следните стойности:

    Работи = 0
    Завършено = 1
    Неуспешно = 2
    Предупреждение = 3
    Неизвестно = 4
    RaiseFailEvent(String, Exception) Function Използва се за неуспех на импортирането на текущо състояние с съобщение за изключение.
    IsRoleAssoicatedWithTeam(Guid, Guid) Function Използва се за определяне дали роля е свързана с определен отбор.
    IsWorkflowActive(Guid) Function Използва се за определяне дали активен е определен работен процес.
    PackageLog Класови указател Указател към инициализирания интерфейс за регистриране на пакета. Този интерфейс се използва от пакет за регистриране на съобщения и изключения от файла на дневника на пакета.
    RootControlDispatcher Свойство Диспечерски интерфейс, използван, за да позволи на вашия контрол да предостави собствен потребителски интерфейс по време на разгръщане на пакета. Използвайте този интерфейс, за да увиете всички UI елементи или команди. Важно е да проверите тази променлива за нулеви стойности, преди да я използвате, тъй като може да не е зададена стойност.
    CrmSvc Свойство Показалец към CrmServiceClient клас, който позволява на пакет да адресира Dynamics 365 отвътре в пакета. Използвайте този показалец, за да изпълните SDK методи и други действия в презаписаните методи.
    DataImportBypass Свойство Укажете дали Dynamics 365 Package Deployer пропуска всички операции за импортиране на данни като импортиране на примерни данни на Dataverse, плоски данни и данни, изнесени от Configuration Migration Tool. Укажете „вярно” или „невярно”. По подразбиране е false.
    OverrideDataImportSafetyChecks Свойство Задайте дали Dynamics 365 Package Deployer заобикаля някои от своите проверки за безопасност, което помага за подобряване на производителността на импортирането. Посочете true или false. По подразбиране е false.

    Трябва да зададете това свойство само true ако целевият Dataverse екземпляр не съдържа никакви данни.
  4. Запишете проекта. Следващата стъпка е да създадете пакета.

Изграждане и внедряване

Следващите раздели описват как да създадете и разположите пакет.

Компилация

Изграждането на вашия пакет е описано по-долу в зависимост от инструмента, който използвате.

За да създадете пакет, създаден с CLI, можете да заредите .csproj файла в Visual Studio, но вместо това ще използваме командата dotnet и MSBuild. Примерът по-долу предполага, че работната директория съдържа файла *.csproj.

> dotnet publish

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

По желание можете да разгледате детайлите на изградения пакет.

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

Вашият пакет е съставен от следните файлове под папката <Project>\Bin\Debug.

  • <Папка> PackageName: Името на папката е същото като това, което сте променили за името на папката на пакета в стъпка 2.g на този раздел Добавяне на персонализиран код. Тази папка съдържа всички решения, данни за конфигурация, фиксирани файлове и съдържанието за вашия пакет.

Бележка

Може да видите папка .NET (напр. net472), съдържаща папка pdpublish. Вашият DLL и други файлове на проекта са в тази папка pdpublish.

  • <PackageName>.dll: Колекцията съдържа персонализирания код за вашия пакет. По подразбиране името на блока е същото като името на вашия проект.

Внедряване

След като създадете пакет, можете да го разгърнете в екземпляр на Dataverse, като използвате Package Deployer инструмент, Windows PowerShell, или CLI команда.

  • За внедряване с помощта на инструмента Package Deployer, първо изтеглете инструмента, както е описано в инструменти за разработка на Dataverse. След това следвайте подробната информация за разполагането на пакети в статията Разполагане на пакети с помощта Package Deployer на или Windows PowerShell.

  • За внедряване с помощта на CLI, използвайте командата pac package deploy.

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

    Бележка

    За да разположите пакет в целева среда с помощта на CLI, първо трябва да настроите профил за удостоверяване и да изберете организация. Повече информация: pac auth create, pac org select

Най-добри практики

По-долу са изброени няколко съвета за най-добра практика, които да следвате, когато работите с пакети на Package Deployer.

Създаване на пакети

Когато създават пакети, разработчиците трябва:

  • Уверете се, че сглобките на пакетите са подписани.

Разгръщане на пакети

При внедряването на пакети Dataverse администраторите трябва да:

  • Настоявайте за подписани сглобки на пакети за да можете да проследите сглобката до нейния източник.
  • Тествайте пакета на екземпляр за предварителна продукция, за предпочитане огледален образ на производствен екземпляр, преди да го стартирате на производствен екземпляр.
  • Създаване на резервно копие на производствения екземпляр преди разгръщането на пакета.

Вижте също

Инструмент Solution Packager