Package Deployer ツールで使用するパッケージを作成する

Package Deployer を使用すると、管理者は Microsoft Dataverse のインスタンスにパッケージを展開できます。 Package Deployer パッケージ は、次の一部またはすべてで構成されます:

  • 1 つ以上のDataverseソリューション ファイル。
  • フラット ファイルまたは構成移行ツールからエクスポートされた構成データ ファイル。 ツールの詳細については、構成移行ツールでインスタンスと組織間を移動する構成データを移動 を参照してください。
  • パッケージの前、間、または後に実行できるカスタム コードは、Dataverse インスタンスに展開されます。
  • 展開プロセスの最初か最後に表示可能なパッケージに固有の HTML コンテンツ。 このコンテンツは、パッケージに展開されるソリューションとファイルの説明を提供する場合に役立ちます。

Note

プラグイン パッケージ と呼ばれる別のパッケージ タイプがあります。 この種のパッケージは、プラグイン依存アセンブリ用であり、Package Deployer パッケージとは関係ありません。

前提条件

  • パッケージに含めるすべてのソリューションとその他のファイルがそろっていることを確認します。
  • Visual Studio 2019 (またはそれ以降)、または Visual Studio Code です。

プロセスの概要

Package Deployer パッケージを作成するには、次の手順に従います。

  • Visual Studio または MSBuild プロジェクトを作成する
  • ソリューションとその他のファイルをプロジェクトに追加する
  • 指定された HTML ファイルを更新する (オプション)
  • パッケージの構成値を指定する
  • パッケージ用のカスタム コードを定義する
  • パッケージをビルドおよび展開する

これらの手順については、この記事で詳しく説明います。

パッケージ プロジェクトを作成する

最初の手順は、パッケージの Visual Studio または MSBuild プロジェクトを作成することです。 これを行うには、使用可能な 2 つのツール拡張機能のいずれかを開発用コンピューターにインストールする必要があります。 Visual Studio Code を使用する場合、Microsoft Power Platform CLI をインストールします。 そうでなければ、Visual Studio 2019 を使用して、Visual Studio 向けの Power Platform tools をインストールします。 Power Platform tools 拡張機能は現在、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

作成したプロジェクトで、PkgAssets フォルダー内の ImportConfig.xml 構成ファイルと PackageImportExtension.cs ファイルを見つけます。 この記事で後述するように、これらのファイルを変更します。

パッケージ ファイルを追加する

パッケージ プロジェクトを作成したら、そのプロジェクトにソリューションやその他のファイルを追加することができます。

CLI を使用する場合、追加 サブコマンドのいずれかを使用して、外部パッケージ、ソリューション、参照をパッケージ プロジェクトに追加できます。 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 または falsetrueの場合は、サンプル データをDataverseインスタンスにインストールします。 このデータは Dataverse 内の設定>データ管理 領域からインストールすることができるのと同じサンプル データです。

    waitforsampledatatoinstall
    true または falsetrueが設定されており、installsampledatatrueに設定されている場合、パッケージを展開する前に、サンプル データがインストールされるのを待ちます。

    Note

    waitforsampledatatoinstalltrueに設定している場合、installsampledatatrueに設定していることを確認してください。

    agentdesktopzipfile
    解凍する zip ファイルの名前。 ここで.zip ファイル名を指定する場合は、パッケージの展開プロセス中に、ファイルのコンテンツを解凍する場所を選択するように求める画面を追加します。

    この属性は、Dynamics 365 用 Unified Service Desk のパッケージを作成するのによく使用されます。 Unified Service Desk の詳細については、Unified Service Desk 3.0 の管理者ガイド を参照してください。

    agentdesktopexename
    展開プロセスの最後に呼び出される zip ファイルまたは URL の .exe または .msi ファイルの名前。

    この属性は、Unified Service Desk のパッケージを作成するのによく使用されます。

    crmmigdataimportfile
    構成移行ツールを使用してエクスポートされた、既定の構成データ ファイル (.zip) のファイル名。

    • Package Deployer の実行中、新しいランタイム設定を使用して指定されたロケール ID (LCID) に基づいて構成データ ファイルのローカライズ済みファイルをインポートできます。 <cmtdatafile> ノード (後で説明) を使用してパッケージ内のローカライズ済みの構成データ ファイルを指定し、OverrideConfigurationDataFileLanguage メソッド (後述) を使用してランタイム設定を使用して指定されたロケール ID に基づいて構成データ ファイルをインポートするロジックを指定します。 パッケージを使用して一度に複数の構成データ ファイルをインポートすることはできません。

    • Dataverse (設置型) の場合、構成データ ファイルにユーザー情報が含まれており、ソースとターゲットの Dataverse インスタンスの両方が同じ Active Directory ドメイン上にある場合、ユーザー情報は対象の Dataverse インスタンスにインポートされます。 異なるドメインの Dataverse (設置型) インスタンスにユーザー情報をインポートするには、プロジェクトで構成移行ツールを使用して生成されたユーザー マップ ファイル (.xml) を含め、それを後で説明される <cmtdatafile> ノードの usermapfilename 属性を使用して構成データ ファイルに沿って指定する必要があります。 ユーザー情報は Dataverse インスタンスにインポートすることはできません。
      <solutions> ノード
      インポートするソリューションについて説明する<configsolutionfile>ノードの配列が含まれます。 このノードの下のソリューションの順序は、ターゲットDataverseインスタンス上にソリューションがインポートされる順序を示します。

      <configsolutionfile> ノード
      <solutions> ノードの下のこのノードを使用して、個々のソリューションおよびインポートする各ソリューションの次の情報を指定します:

    • solutionpackagefilename: ソリューションの .zip ファイル名を指定します。 必須。

    • overwriteunmanagedcustomizations: 対象 Dynamics 365 インスタンスにすでに存在するソリューションをインポートするときに、アンマネージド カスタマイズをすべて上書きするかをどうかを指定します。 この属性はオプションであり、この属性を指定しない場合、デフォルトでは、既存のソリューションで管理されていないカスタマイズは、ターゲットの Dynamics 365 インスタンスで維持されます。

    • publishworkflowsandactivateplugins: ワークフローを公開するか、ソリューションがインポートされた後にターゲット Dynamics 365 インスタンスのプラグインをアクティブ化するかどうかを指定します。 この属性を指定しないように指定した場合、既定では、ワークフローは公開され、プラグインは、ソリューションがターゲット Dynamics 365 インスタンスにインポートされた後にアクティブ化されます。

      <configsolutionfile>ノードを必要なだけ追加することによって、パッケージに複数のソリューションのファイル名を追加できます。 たとえば、3 つのソリューション ファイルをインポートする場合、次のように追加します:

    
    <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> ノード
    インポートする個々のファイルとzip ファイルを別々に説明するのに使用する<configimportfile><zipimportdetails>ノードの配列が含まれます。

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

    以下は、サポートされている属性のリストです:

    Attribute 説明設定
    filename インポート データを格納しているファイルの名前。 ファイルが .zip ファイルの場合、.zip ファイル <zipimportdetails> の各ファイルに対応する <zipimportdetail> ノードを持つノードが存在する必要があります。
    filetype この値は、csv、xml、または zip にすることができます。
    associatedmap このファイルで使用するDataverseインポート データ マップの名前。 空白の場合、このファイルにシステムが決定したインポート データ マップ名を使用しようとします。
    importtoentity プロセスの最後に呼び出すリンクを提供する zip ファイル内の exe ファイル、URL、または .msi ファイルの名前になります。
    datadelimiter インポート ファイルで使用される、データ区切り文字の名前。 有効な値は、単一引用符または二重引用符です。
    fielddelimiter インポート ファイルで使用される、フィールド区切り文字の名前。 有効な値は、comma または colon、または single quote です。
    enableduplicatedetection データのインポート時に重複データ検出ルールを有効にするかどうかを示します。 有効な値は、true または falseです。
    isfirstrowheader インポート ファイルの最初の行にフィールド名が含まれていることを示すのに使用します。 有効な値は、true または false
    isrecordownerateam インポート時のレコードの所有者をチームにするかどうかを示します。 有効な値は、true または false
    owneruser レコードを所有するユーザー ID を示します。 既定値は、現在ログオンしているユーザーです。
    waitforimporttocomplete true の場合、システムは続行する前にインポートの完了を待ちます。 false の場合、ジョブをキューして次に進みます。

    <zipimportdetails> ノード
    このノードには、Dynamics 365 にインポートするために使用される zip ファイルに含まれるファイルについて説明する <zipimportdetail> ノードの配列が含まれます。

    <zipimportdetail> ノード
    <zipimportdetails>ノードの下のこのノードを使用して、<configimportfile>ノードで指定されている、.zip ファイル内の個々のファイルの情報を提供します。

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

    サポートされている属性を次に示します:

    Attribute 説明設定
    filename インポート データを格納しているファイルの名前。
    filetype この値は、csv または xml にすることができます。
    importtoentity プロセスの最後に呼び出すリンクを提供する、.zip ファイル内の exe ファイル、URL、または .msi ファイルの名前になります。

    <filesmapstoimport> ノード
    このノードには、インポートする<configmapimportfile>ノードの配列が含まれます。 このノードのマップ ファイルの順序は、インポートされた順序を示します。 データ マップの詳細については、インポート用データ マップの作成 を参照してください。

    <configimportmapfile> ノード
    <filesmapstoimport> ノードの下のこのノードを使用して、Dataverse でインポートする個々のマップ ファイルの情報を提供します。

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

    <cmtdatafiles> ノード
    このノードには、インポートするローカライズ済みの構成データ ファイルを含む <cmtdatafile> ノードの配列が含まれます。

    <cmtdatafile> ノード
    <cmtdatafiles> ノード下でこのノードを使用して、ロケール ID (必須) およびユーザー情報マップ ファイル (オプション) と共にローカライズ済みの構成データ ファイルを指定します。 たとえば、次のようになります。

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

    ランタイム設定を使用して指定されたロケール ID (LCID) の値 (後で説明) に基づいて、既定の構成データ ファイル (crmmigdataimportfile で指定) の代わりに、OverrideConfigurationDataFileLanguage メソッドでカスタム ロジックを定義して、ローカライズ済みの構成データ ファイルをインポートすることができます。

  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 プロパティを使用することで、任意のランタイム パラメーターのサポートをパッケージに追加することができます。

      たとえば、次のサンプル コードは、可能性のある 2 つの値 true または false を持つパッケージに対して SkipChecks と呼ばれるランタイム パラメーターを有効にします。 サンプル コードは、ユーザーが Package Deployerの実行中 (コマンドラインまたはPowerShellのいずれかを使用して) に、いずれかのランタイム パラメーターを指定しているかどうかをチェックして、次にそれに従って情報を処理します。 パッケージの実行中にユーザーがランタイム パラメーターを指定しない場合、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");  
      }  
      

      このコードにより、管理者はコマンド ラインまたは Import-CrmPackage コマンドレットを使用して、パッケージをインポートするために、Package Deployer ツールの実行中にセーフティ チェックを回避するかどうかを指定することができます。 詳細情報: Package Deployer および Windows PowerShell を使用してパッケージをデプロイする

    2. ソリューションがPreSolutionImportの上書きメソッドの定義にインポートされる前に実行するカスタム コードを入力して、ターゲットDataverseインスタンスの指定されたソリューションの更新中に、カスタマイズを維持または上書きするかどうか、プラグインとワークフローを自動的にアクティブ化するかどうかを指定します。

    3. RunSolutionUpgradeMigrationStep の上書きメソッド定義を使用して、データ転送を実行または 2つのバージョンのソリューション間でアップグレードします。このメソッドは、ユーザーがインポートするソリューションが既に対象の Dataverse インスタンスに存在する場合にのみ呼び出されます。

      この関数は、次のパラメーターが必要です。

      パラメーター 内容
      solutionName ソリューションの名前
      oldVersion 古いソリューションのバージョン番号。
      newVersion 新しいソリューションのバージョン番号。
      oldSolutionId 古いソリューションのGUID。
      newSolutionId 新しいソリューションのGUID。
    4. ソリューションのインポートがBeforeImportStageメソッドの上書き定義で完了する前に実行するカスタム コードを入力します。 ソリューションのインポートが完了する前に、ImportConfig.xml ファイルで指定されたソリューションのサンプル データおよびいくつかのフラット ファイルがインポートされます。

    5. OverrideConfigurationDataFileLanguage の上書きメソッドの定義を使用して構成データのインポートに対して現在選択されている言語を上書きします。 指定した言語の指定されたロケール ID (LCID) がパッケージの利用可能な言語の一覧にない場合、既定のデータ ファイルがインポートされます。

      ImportConfig.xml ファイルの <cmtdatafiles> ノードの構成データに対して利用可能な言語を指定します。 既定の構成データ インポート ファイルは crmmigdataimportfile ファイルのImportConfig.xml 属性で指定されます 。

      データ チェック (OverrideDataImportSafetyChecks = true) は、対象の Dataverse インスタンスにデータ何も含まれていないことを確認する場合に、ここで有効になります。

    6. インポートが AfterPrimaryImport>メソッドの上書き定義で完了した後に実行するカスタム コードを入力します。 ソリューションのインポートが開始する前に、これまでにインポートされなかった残りのフラット ファイルがインポートされるようになりました。

    7. 目的のパッケージ名に、パッケージ フォルダーの既定の名前を変更します。 そのようにするには、ソリューション Explorer ペインの PkgFolder (または PkgAssets) フォルダー名を変更してから、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) 関数 ユーザー インターフェイス (UI) で新しい処理中項目を作成するときに使用します。
    RaiseUpdateEvent(String, ProgressPanelItemStatus) 関数 CreateProgressItem(String).の呼び出しによって作成された処理中の更新に使用します。

    ProgressPanelItemStatus は次の値の列挙体です:

    作業中 = 0
    完了 = 1
    失敗 = 2
    警告 = 3
    不明 = 4
    RaiseFailEvent(String, Exception) 関数 現在の状態のインポートが失敗する場合に例外メッセージと共に使用します。
    IsRoleAssoicatedWithTeam(Guid, Guid) 関数 ロールが特定のチームに関連付けられているかどうかを判断する場合に使用します。
    IsWorkflowActive(Guid) 関数 指定したワークフローがアクティブになっているかどうかを判断する場合に使用します。
    PackageLog クラスのポインター パッケージの初期化されたログ インターフェイスへのポインター。 このインターフェイスは、パッケージのログ ファイルにメッセージと例外をログするのに、パッケージによって使用されます。
    RootControlDispatcher Property パッケージの展開中に、コントロールが独自の UI をレンダリングするのを許可するのに使用されるディスパッチャー インターフェイス。 UI 要素やコマンドをラップするのにも、このインターフェイスを使用します。 値を設定しているかどうかわからないので、それを使用する前に null 値のこの変数を確認することは重要です。
    CrmSvc Property パッケージがパッケージ内から Dynamics 365 に対応できるようにする CrmServiceClient クラスに対するポインター。 このポインターを使用して、上書きされたメソッドで SDK メソッドと他のアクションを実行します。
    DataImportBypass Property Dataverse サンプル データ、フラット ファイル データ、および構成移行ツールからエクスポートされたデータのインポートなど、Dynamics 365 Package Deployer がすべてのデータ インポート操作をスキップするかどうかを指定します。 true または false を指定します。 既定はfalseです。
    OverrideDataImportSafetyChecks Property 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 でパッケージ フォルダー名に対して変更したものと同じです。 このフォルダーには、すべてのソリューション、構成データ、フラット ファイル、およびパッケージ内容が含まれています。

Note

pdpublish フォルダーを含む .NET フォルダー (例: net472) が表示される場合があります。 DLL およびその他のプロジェクト ファイルは、その pdpublish フォルダーにあります。

  • <PackageName>.dll: このアセンブリには、パッケージのカスタムコードが含まれています。 既定では、アセンブリの名前はプロジェクト名と同じになります。

デプロイ

パッケージの作成後、Package Deployer ツール、Windows PowerShell、または CLI コマンドを使用して、Dataverse インスタンスに展開することができます。

ベスト プラクティス

Package Deployer パッケージを使用する際に従うべきいくつかのベスト プラクティスのヒントを以下に示します。

パッケージの作成

パッケージを作成するときに、開発者は次のことを行う必要があります:

  • パッケージ アセンブリが署名されていることを確認します

パッケージの展開

パッケージを展開するときに、Dataverse 管理者は次のことを行う必要があります:

  • 署名付きパッケージ アセンブリを使用 して、アセンブリをそのソースまで追跡できるようにします。
  • 実稼働インスタンスにそれを実行する前に、事前運用インスタンス (可能であれば、実稼働インスタンスのミラー イメージ) にパッケージをテストします
  • パッケージを展開する前に、運用環境インスタンスをバックアップ します。

関連項目

ソリューション パッケージャー ツール