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