Freigeben über


Dynamics CRM 2016 新機能: ソリューションフレームワークの拡張 その 5 SDK サポート

みなさん、こんにちは。

前回に引き続き、Dynamics CRM 2016 で拡張されたソリューション
フレームワークの機能を紹介します。前回までで UI での操作を紹介しましたが
今回は SDK での操作を紹介します。

過去の記事は以下のリンクよりご参照ください。

ソリューションフレームワークの拡張 その 1
ソリューションフレームワークの拡張 その 2 パッチソリューション
ソリューションフレームワークの拡張 その 3 ソリューションのマージ
ソリューションフレームワークの拡張 その 4 ソリューションのアップグレード

パッチソリューションの作成 CloneAsPatchRequest

ベースソリューションである ソリューション A、 バージョン 1.0.0.0 が存在する
前提で以下のコードを実行すると新しいパッチを作成できます。

// CloneAsPatchRequest の作成
CloneAsPatchRequest cloneAsPatchRequest = new CloneAsPatchRequest();
// パッチソリューションの表示名を指定
cloneAsPatchRequest.DisplayName = "ソリューション A";
// パッチのバージョンを指定。既存のパッチレベルより大きいバージョンが必須
cloneAsPatchRequest.VersionNumber = "1.0.1.0";
// ベースソリューションの名前 (論理名) を指定
cloneAsPatchRequest.ParentSolutionUniqueName = "SolutionA";

// 処理の実行
CloneAsPatchResponse result = (CloneAsPatchResponse)_serviceProxy.Execute(cloneAsPatchRequest);

ソリューションのマージ CloneAsSolutionRequest

ベースソリューションを複数のパッチソリューションが存在する場合、以下の
コードでソリューションをマージすることができます。

// CloneAsSolutionRequest の作成
CloneAsSolutionRequest cloneAsSolutionRequest = new CloneAsSolutionRequest();
// マージされたソリューションの表示名を指定
cloneAsSolutionRequest.DisplayName = "ソリューション A";
// バージョンを指定。
cloneAsSolutionRequest.VersionNumber = "1.1.0.0";
// ベースソリューションの名前 (論理名) を指定
cloneAsPatchRequest.ParentSolutionUniqueName = "SolutionA";

// 処理の実行
CloneAsSolutionResponse result = (CloneAsSolutionResponse)_serviceProxy.Execute(cloneAsSolutionRequest);

マージソリューションのインポート ImportSolutionRequest

パッチソリューションは通常のインポートと同じ方法でインポートできますが
マージソリューションをインポートする際は、以下コードを使用します。

// ImportSolutionRequest の作成
ImportSolutionRequest importSolutionRequest = new ImportSolutionRequest();
// HoldingSolution プロパティを true に設定
importSolutionRequest.HoldingSolution = true;
// ソリューションをバイト配列をして読み取り
importSolutionRequest.CustomizationFile = System.IO.File.ReadAllBytes(@"<Path>\SolutionA_1_1_0_0_managed.zip");

// インポートの実行
ImportSolutionResponse result = (ImportSolutionResponse)_serviceProxy.Execute(importSolutionRequest);

ソリューションのアップグレード DeleteAndPromoteRequest

マージしたソリューションをリリース環境へインポートした後、以下のコード
でソリューションをアップグレードできます。

// DeleteAndPromoteRequest の作成
DeleteAndPromoteRequest deleteAndPromoteRequest = new DeleteAndPromoteRequest();
// ベースソリューションの名前 (論理名) を指定
deleteAndPromoteRequest.UniqueName = "SolutionA";

// 処理の実行
DeleteAndPromoteResponse result = (DeleteAndPromoteResponse)_serviceProxy.Execute(cloneAsSolutionRequest);

まとめ

複数組織への展開などでも活用できると思いますので、是非ご活用ください。

- 中村 憲一郎

※本情報の内容(添付文書、リンク先などを含む)は、作成日時点でのものであり、予告なく変更される場合があります