【Dataverse】Visual StudioによるDataverse Plugin(Pre Operation)

accountテーブルのtelephone1に「81-」を付与するPluginを作成する場合の手順は以下の通りです。

  • Visual Studioの導入
    Visual Studio 2022の無料版をインストールします。
    「Visual Studio 2022」「Visual Studio Installer」「Blend for Visual Studio 2022」の3つがアプリとして表示されます。

    Visual Studio 2022
    →通常の開発用
    
    Visual Studio Installer
    →.NetFrameworkやWEBアプリ開発に必要なパッケージのインストールツール
    
    Blend for Visual Studio 2022
    →アニメーション、storyboards、behaviorsの開発用
     Visual Studio 2022のプロジェクトファイルと互換性あり
    
  • プロジェクト作成
    「クラスライブラリ(.NetFramework)」のプロジェクトを作成し、
    フレームワークに「.NetFramework4.6.2」を選択します。
  • NuGetパッケージの管理
    ソリューションエクスプローラーでプロジェクトを右クリックし、「NuGetパッケージの管理」を選択します。
    「Microsoft.CrmSdk.CoreAssemblies」の最新版をインストールします。
  • クラスファイルの編集
    クラス名を変更し、開発を行います。

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.ServiceModel;
    using Microsoft.Xrm.Sdk;
    
    namespace MyDataversePluginVS462
    {
        public class FollowupPlugin : IPlugin
        {
            public void Execute(IServiceProvider serviceProvider)
            {
                // プラグイン実行コンテキストの取得
                IPluginExecutionContext context = serviceProvider.GetService(typeof(IPluginExecutionContext)) as IPluginExecutionContext;
                if (context == null)
                {
                    throw new InvalidPluginExecutionException("プラグイン実行コンテキストが取得できませんでした。");
                }
    
                // 組織サービスファクトリの取得
                IOrganizationServiceFactory serviceFactory = serviceProvider.GetService(typeof(IOrganizationServiceFactory)) as IOrganizationServiceFactory;
                if (serviceFactory == null)
                {
                    throw new InvalidOperationException("IOrganizationServiceFactory が取得できませんでした。");
                }
    
                // トレーシングサービスの取得
                ITracingService tracingService = serviceProvider.GetService(typeof(ITracingService)) as ITracingService;
                if (tracingService == null)
                {
                    throw new InvalidPluginExecutionException("トレーシングサービスが取得できませんでした。");
                }
    
                // イベントの種類がCreateであり、ターゲットエンティティがAccountであるか
                if (context.InputParameters.Contains("Target") && context.InputParameters["Target"] is Entity account && account.LogicalName == "account")
                {
                    tracingService.Trace("AddPhonePrefixプラグインが実行されました。");
    
                    // 電話番号フィールドが存在するか
                    if (account.Attributes.Contains("telephone1"))
                    {
                        string phoneNumber = account.Attributes["telephone1"] as string;
                        if (!string.IsNullOrEmpty(phoneNumber))
                        {
                            // 電話番号にプレフィックスを追加
                            account.Attributes["telephone1"] = "+81-" + phoneNumber;
                            tracingService.Trace($"電話暗号を'{phoneNumber}'から'+81-{phoneNumber}'に変更しました。");
                        }
                    }
                }
                else
                {
                    throw new InvalidPluginExecutionException("プラグインが実行できませんでした。");
                }
    
                //throw new NotImplementedException();
            }
        }
    }
    
  • アセンブラの署名
    ソリューションエクスプローラーでプロジェクトを右クリックし、「プロパティ」を選択します。
    左メニューから「署名」を選択し、キーファイルに任意の名前を入力します。
    「キーファイルをパスワードで保護します」のチェックを外します。
    署名アルゴリズムはデフォルトのままで署名を行います。
  • ソリューションのビルド
    ソリューションのビルドを行います。
    プロジェクトファイルの場所にもよりますが、デフォルトの場合、以下にdllファイルが出力されます。
    C:\Users\ユーザー名\source\repos\MyDataversePluginVS462\MyDataversePluginVS462\bin\Debug

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です