コンポーネント ライブラリは、1 つ以上のキャンバス コンポーネントを含むことができる特殊な種類のキャンバス アプリです。 これらのライブラリ コンポーネントは、環境内の他のすべてのキャンバス アプリで使用できます。 この機能を使用すると、1 つのアプリに制限されている アプリ レベル のコンポーネントとは異なり、環境内のすべてのアプリで再利用可能な共有コンポーネントを作成できます。
コンポーネント ライブラリのコンポーネントを使用するには、最初にコンポーネントをキャンバス アプリにインポートする必要があります。 インポートしたら、任意のアプリ画面にコンポーネントを追加できます。 コンポーネント ライブラリからコンポーネント定義を更新すると、 必要 に応じて、または アプリを編集用に開いたときに、変更を確認して組み込むように求められます。 コンポーネント ライブラリと依存アプリは、標準の Microsoft Dataverse ソリューションを使用して別の環境に移動することもできます。
注
この記事では、"インポート" という用語はコンポーネント ライブラリからアプリへのコンポーネントのインポートを指します。ソリューションを Dataverse にインポートする場合と混同しないでください。
コンポーネント ライブラリのコンポーネントがキャンバス アプリにインポートされると、そのコンポーネントの定義がキャンバス アプリの定義にコピーされます。 コンポーネント定義がインポートされると、そのコンポーネント定義に関する限り、アプリは "自己完結型" になります。 アプリ 作成者は、 コンポーネントを編集し、アプリ内にコンポーネントのローカル インスタンスを作成することを選択できます。 この時点で、コンポーネントの発生元のコンポーネント ライブラリへの直接リンクはありません。 この自己完結型の特性は、キャンバス アプリがコンポーネント ライブラリが存在しない別の環境に移行される場合にも適用されます。 インポートされたコンポーネント定義のインスタンスをターゲット環境内のアプリ内に引き続き作成でき、アプリは引き続き発行および再生できます。 この場合、使用しているアプリでは、新しい更新プログラムは求めも受信もされません。
アプリからコンポーネント ライブラリへの関係を維持するには、使用しているアプリ内でコンポーネントを編集するのではなく、コンポーネント ライブラリを使用してコンポーネントに変更を加えるようにします。
キャンバス アプリとコンポーネント ライブラリ ソリューションのサポート
他のソリューション オブジェクトの依存関係と一致します。キャンバス アプリがコンポーネント ライブラリからキャンバス コンポーネントをインポートすると、そのコンポーネント ライブラリに依存します。 アプリを新しい環境に移動するには、コンポーネント ライブラリを同じソリューション内にパッケージ化するか、前提条件としてインストールする必要があります。 アプリからコンポーネントへのライブラリの依存関係は、ターゲット環境で維持されます。 後で、更新されたコンポーネントを含むコンポーネント ライブラリがソリューションを使用してターゲット環境にインポートされると、既存のアプリは通常の コンポーネント更新フローを使用して新しいコンポーネント定義を取得します。
ソリューションでのコンポーネント ライブラリの作成とエクスポート
ソリューション内から直接コンポーネント ライブラリを作成することも、既存のソリューションに追加することもできます。
Dataverse を使用できる環境にコンポーネント ライブラリを保存すると、コンポーネント ライブラリが既定のソリューションに自動的に追加されます。 既定の CDS パブリッシャー プレフィックスを持つコンポーネント ライブラリに対して、一意の論理名が生成されます。 この動作は、ソリューション システムがその存在を認識し、コンポーネント ライブラリの論理名を使用するアプリからの依存関係をリンクできるようにすることです。
注
コンポーネント ライブラリ ALM 機能のロールアウト前に作成されたコンポーネント ライブラリは、ALM 機能を有効にする前に、編集、発行、およびエディターを明示的に閉じる必要があります。 コンポーネント ライブラリ ALM の準備状況は、既定のソリューションに存在することで確認できます。
ソリューション内のコンポーネント ライブラリでは、ターゲット環境でのコンポーネント ライブラリの動作を制御するカスタマイズ管理プロパティの 許可 もサポートされています。
この設定をオフにし、ソリューションをターゲット環境にエクスポートすると、コンポーネント ライブラリを編集できなくなります。
コンポーネント ライブラリの依存関係
コンポーネント ライブラリのコンポーネントを使用するアプリは、ソリューション インフラストラクチャに依存しているとマークされます。 この動作は、特定の環境の Dataverse ソリューションに追加されるすべてのアプリに適用されます。 ソリューションの外部でアプリを作成することはできますが、これらのアプリにはソリューションの依存関係はありません。 これらのアプリを後でソリューションに追加して、ソリューション ALM の一部にすることができます。
コンポーネント ライブラリからコンポーネントを使用するアプリのみが含まれているが、コンポーネント ライブラリを除外するソリューションをインポートすると、次のメッセージが表示されます。
「<アプリ名>の依存関係が不足しているため、インポートに失敗しました。」
この場合は、最初にコンポーネント ライブラリ ソリューションをインストールするか、キャンバス アプリを含むソリューションにコンポーネント ライブラリをバンドルすることができます。 どちらの手順でも、アプリがターゲット環境で依存関係を含むことを確保します。
ライブラリが更新され、ソリューションを介して新しいコンポーネント バージョンがインポートされると、アプリは通知を受け取り、 アプリが編集のために開かれると更新プログラムを受け取ります。
注
コンポーネント ライブラリの管理プロパティ [カスタマイズを許可する ] がオフになっている場合、ターゲット環境でコンポーネント ライブラリを編集することはできません。
依存関係は、アプリの最新の公開状態に基づいて計算されます。 ライブラリ コンポーネントを使用しない古いバージョンのアプリを復元すると、依存関係がアプリとソリューションから削除されます。 コンポーネントを実際に使用せずにコンポーネント ライブラリからアプリにインポートすると、未使用のライブラリ コンポーネントは将来の使用のためにアプリ内で引き続き使用できるため、依存関係も作成されます。
ヒント
使用しているアプリ内のコンポーネント ライブラリからコンポーネントを編集すると、ローカル コピーが作成されます。 この時点で、ライブラリ コンポーネントは[ 挿入 ]ペインで引き続き使用できます。 依存関係を完全に削除するには、挿入>ライブラリ コンポーネント>... (省略記号) >アプリから削除 からコンポーネントを削除します。
ベスト プラクティスとトラブルシューティング
最適なパフォーマンスを得るには、ライブラリ内のコンポーネントの数を 20 に制限します。 コンポーネント内のコンポーネントの数が時間の経過と同時に増加する可能性が高い場合は、事前に複数のコンポーネント ライブラリを計画して作成します。 この方法では、アプリが環境全体に移動されると、ソリューションペイロードも削減されます。
コンポーネント ライブラリがアプリケーションで使用可能になるまでに遅延が発生し、最大で 5 分かかる場合があります。
ソリューションがインストールされているターゲット環境のライブラリ コンポーネントからアプリが更新プログラムを受信できない場合は、次のアクションを使用して確認します。
- ターゲット環境のコンポーネント ライブラリに加えられた変更は、コンポーネントの最上位レイヤーに存在します。 その後、これらのカスタマイズによって、コンポーネントのランタイム動作が定義されます。 これらのアンマネージド カスタマイズを削除するには、「アン マネージド レイヤーを削除する」を参照してください。
- ソリューション ビューからコンポーネント ライブラリの論理名を決定します。 ライブラリがソリューションに明示的に追加されていない場合は、既定のソリューションを使用します。
- File>名前を付けて保存>このパソコンから、ライブラリ コンポーネントを使ってローカルコンピュータにアプリをダウンロードします。 ダウンロードしたファイルの名前を .zip 拡張子に変更し、パッケージを解凍します。 Properties.json ファイルを開き、キーワード "LibraryDependencies" を検索します。 一致するライブラリの論理名が表示されます。
- ソリューションを使用している場合は、キャンバス アプリによってコンポーネント ライブラリが ソリューションの依存関係として適切に識別されていることを確認します。 ソリューションでコンポーネント ライブラリがソリューションの依存関係として正しく識別されない場合は、コンポーネント ライブラリ リンクへのアプリの依存関係が正しく作成されていないことを意味します。 その場合は、ソリューション プロバイダーに問い合わせて問題を解決してください。
- ソリューション発行元の場合は、コンポーネント ライブラリがソリューション内のライブラリ論理名と共に保存されていること、およびコンポーネント ライブラリ .msapp パッケージで参照されているライブラリと同じであることを確認します。
ソリューションのエクスポートでは、常に最新バージョンのコンポーネント ライブラリがエクスポートされます。 そのため、ソリューションを使用してエクスポートする前に、常に最新のコンポーネント バージョンでアプリを更新してください。 このアクションにより、最新バージョンのコンポーネント ライブラリで使用できるのと同じコンポーネント バージョンがアプリに含まれるようにします。 アプリとライブラリは、初めてターゲット環境に移動されたときに、相互に同期されると見なされます。そのため、アプリの編集時に更新プログラムを使用できるように求められません。