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);
まとめ
複数組織への展開などでも活用できると思いますので、是非ご活用ください。
- 中村 憲一郎
※本情報の内容(添付文書、リンク先などを含む)は、作成日時点でのものであり、予告なく変更される場合があります