次の方法で共有


2 つのソリューション間の循環依存関係が原因で "ソリューションの削除に失敗しました" エラーが発生する

適用対象: Power Platform、ソリューション

この記事では、2 つのソリューション間の循環依存関係が原因でソリューションの削除が失敗する問題の回避策について説明します。 循環依存関係は、2 つのソリューションがそれぞれ他のソリューションのコンポーネントに依存している場合に存在します。

ヒント

2 つのソリューション間の循環依存関係を回避するには、異なるソリューションを デベロピングするために異なる環境を使用。 データやテーブルなどのコンポーネントを使用する場合、環境の分離は重要です。

現象

ソリューションを削除 (アンインストール) すると、依存関係が別のソリューションに存在することを示す次のエラーが表示されます。

ソリューション <ソリューション名の削除に失敗しました>。 ソリューションの依存関係が存在し、アンインストールできません。

同じエラーは、最初のソリューションを削除するときに、エラーで指定された他のソリューションを削除しようとすると発生します。 これは 円形の依存関係です

原因

ソリューション間の循環依存関係は、異なるソリューションの開発環境が分離されていないことが原因で発生する可能性があります。 その結果、2 つのソリューション間の意図しないコンポーネントの依存関係が同じ環境で開発されます。

回避策

2 つのソリューション間の循環依存関係を回避するには、まず、異なるソリューション間の依存関係を理解する必要があります。 循環依存関係を示すエラーが発生した場合は、通知の View 依存関係 ボタンを選択します。

依存関係には、アンインストールしようとしているソリューションに依存するすべてのコンポーネントが表示されます。 一覧から各コンポーネントを選択し、[ソリューション レイヤーの表示 を選択して コンポーネントの依存ソリューションを見つけることができます。

たとえば、ソリューション A とソリューション B は相互に依存関係があります。 図に示すように、

  • ソリューション A には、コンポーネント 1 とコンポーネント 2 の 2 つのコンポーネントがあります。
  • ソリューション B には、コンポーネント 3 とコンポーネント 4 の 2 つのコンポーネントがあります。
  • ソリューション A のコンポーネント 2 は、ソリューション B のコンポーネント 3 に依存します。
  • ソリューション B のコンポーネント 4 は、ソリューション A のコンポーネント 1 に依存します。
  • 循環依存関係のため、どちらのソリューションも削除できません。

相互に依存関係を持つ 2 つのソリューションの例。

依存関係を削除するためのアップグレード

循環依存関係を解決するには、関連するソリューションの 1 つで作業し、もう一方 依存関係 を削除するように更新します。

オプション 1
  1. ソリューション A のソース環境に移動し、コンポーネント 2 を編集して、コンポーネント 3 への依存関係を削除します。
  2. ソリューション A を新しいバージョンとしてエクスポートし、ターゲット環境にアップグレードします。

ソリューション A にはソリューション B への依存関係がないため、ソリューション B を削除できるようになりました。

ソリューション A のソリューション B への依存関係を削除する例。

オプション 2
  1. ソリューション B のソース環境に移動し、コンポーネント 4 を編集してコンポーネント 1 への依存関係を削除します。
  2. ソリューション B を新しいバージョンとしてエクスポートし、ターゲット環境にアップグレードします。

ソリューション B にはソリューション A への依存関係がないため、ここでソリューション A を削除できます。

ソリューション B のソリューション A への依存関係を削除する例。

依存関係を削除するためのアクティブな変更

ソリューションを削除できるように依存関係を削除する場合は、アクティブレイヤーの依存関係を削除してから、ソリューションを削除します。

オプション 1

ターゲット環境で、コンポーネント 2 を編集し、アクティブ レイヤーのコンポーネント 3 への依存関係を削除します。 これで、ソリューション B の削除が許可されます。 ソリューション B が削除されると、ソリューション A も削除できます。

オプション 2

ターゲット環境で、コンポーネント 4 を編集し、アクティブ レイヤーのコンポーネント 1 への依存関係を削除します。 これで、ソリューション A の削除が許可されました。 ソリューション A が削除されると、ソリューション B も削除できます。