共用方式為


移除相依性概觀

解決方案元件通常取決於其他解決方案元件。 您無法刪除任何有其他解決方案元件相依性的解決方案元件。 相依性是由解決方案框架自動建立的記錄,用來防止必要元件被移除,而另一或多個相依元件仍包含對它們的參照。

依賴關係的示例是,假設表單運行需要一個字段,當您嘗試執行導致刪除該欄位的作時,該表單將停止工作。

另一個範例是當您嘗試刪除模型驅動應用的網站地圖時。 系統指示對應用存在依賴關係。 應用是依賴元件,網站地圖是必需元件。 系統會阻止您刪除網站地圖,直到您刪除依賴項。

系統檢測應用依賴於網站地圖的依賴項。

注意

刪除表示 元件已完全刪除 Microsoft Dataverse。

在本文中,我們將討論如何處理這些相依性及可用來移除不再需要之相依性的原則。

未受管理的和受管理的元件之相依性

首先,重要的是要瞭解依賴關係僅阻止刪除所需元件的作。 會刪除元件的動作不盡相同,視元件為未受管理的或受管理的而異。

在描述依賴關係時,最好熟悉解決方案層和元件層的概念。 如果您不熟悉,我們建議您在繼續之前閱讀本文: 解決方案層

未受管理的元件

這些元件由活動解決方案中的單一層表示。 任何刪除這類元件的作業都會導致元件完全被移除。

受管理的元件

要刪除受管理的元件,受多個因素影響:解決方案層級數目、要卸載之層級的相對位置,以及元件的發行者。 例如,當您刪除元件時,請思考下列案例,以及當您卸載不同層時,將會出現什麼行為。

範例案例

下列範例案例闡釋卸載解決方案時,解決方案層會發生的變化。

案例 1:卸載單一的解決方案層

以單一層卸載。

卸載解決方案 1 會造成元件的移除,因為它是元件的唯一層。

案例 2:從不同的發行者卸載解決方案層

使用兩層(不同發行者)卸載。

  • 卸載解決方案 2 並不會造成元件的移除。 僅刪除該層。
  • 卸載解決方案 1 會造成元件的移除,因為動作發生在最底層。 事實上,無法在此案例中卸載解決方案 1,因為有不同發行者的解決方案會延伸至元件。

案例 3:從不同的發行者卸載多個解決方案層

使用多層(不同發行者)卸載。

  • 卸載解決方案 3 並不會造成元件的移除。 僅刪除該層。
  • 卸載解決方案 2 並不會造成元件的移除。 僅刪除該層。
  • 卸載解決方案 1 不會導致元件刪除,因為在這種情況下,同一發行者 (發行者 A = 發行者 C) 有另一個解決方案。 該平臺會從解決方案 1 移除層,並將它替換為解決方案 3 中的層。

案例 4:在未受管理的自訂中卸載解決方案層

用兩層卸載 - 未受管理的自訂。

  • 卸載活動 (非託管) 層不會導致元件刪除。 僅刪除該層。 請注意,無法卸載活動解決方案,但可以使用“刪除活動自定義 ”功能刪除 元件。
  • 卸載解決方案 1 會造成元件的移除。 此動作發生在最底層中。 與案例 2 不同,您可以卸載解決方案 1。 活動解決方案不被視為擴展,並且兩個層都被刪除。

顯示相依性頁面

顯示相依性命令會列出所選解決方案或解決方案元件的相依性。 它可以用來調用:

  • 在解決方案頁面上選取顯示相依性
  • 選擇解決方案元件時,選擇解決方案中的進階>顯示相依性
  • 嘗試卸載解決方案,這會導致平臺檢測到依賴項存在。

在「依賴項 頁面中,您可以打開、刪除或刪除元件。 其他資訊:查看元件的相依性

診斷相依性

考慮這個場景。 此處的環境有兩個解決方案: 解決方案 - 工作流解決方案 - 自定義實體

包含兩個解決方案的解決方案清單。

環境的製作者決定不再需要 解決方案 - 自定義實體。 製造商試圖刪除它,並顯示以下頁面:

嘗試刪除解決方案後的相依性詳細資料。

卸載解決方案正在嘗試刪除名為「自定義實體」的 表和三個字段 (“自定義實體”、“名稱”和 “數位字段”) ,並且所有四個元件都具有依賴項。

注意

卸載解決方案可能會刪除更多元件,但因為它們不具有相依性,所以不會出現在清單中。

下一個步驟是檢查每個相依性的解決方案層連結(最右邊的欄)。 這有助於您決定如何刪除依賴項。

下圖顯示了表 (自定義實體) 和流程 (測試工作流) 之間的依賴關係詳細資訊。

自訂表依賴項詳細資訊。

根據顯示的數據,可以觀察到依賴元件屬於名為 SolutionWorkflow 的解決方案。 若要移除此相依性,您可以執行下列其中一項:

  • 通過刪除對表或其子元件的任何引用來更新 SolutionWorkflow 中工作流的定義。 然後更新升級解決方案。
  • 解除安裝 SolutionWorkflow 解決方案。
  • 從新版本的 SolutionWorkflow 解決方案中移除工作流程,然後執行升級

因為任一相依元件都能防止移除解決方案,所以建議您檢查所有相依性,並在單一作業中進行所有必要的變更。

下圖顯示了表 (自定義實體) 和模型驅動應用 (MyApp) 之間的依賴項詳細資訊。

表 (自定義實體) 和應用 (我的應用) 之間的依賴關係。

根據顯示的數據,您可以觀察到依賴元件屬於名為“活動”的解決方案。 這表示該相依性是透過匯入未受管理的解決方案或透過現代 UI 或 API 執行的未受管理自訂所建立的。

若要移除此相依性,您可以執行下列其中一項:

  • 編輯模型導向應用程式的定義,以移除實體或其子元件的任何參照。 因為模型導向的應用程式支援發行,所以您必須發佈變更。
  • 刪除模型導向的應用程式。

注意

卸載未受管理的解決方案不是移除此相依性的選項,因為未受管理的解決方案只是將元件分組的一種方式。

移除受管理之相依性的動作

受管理的相依性是相依元件與受管理的解決方案連結的位置。 若要解決這種相依性,您必須在新增元件的解決方案上執行動作。 該動作可能會有所不同,視您的嘗試作為而定。

如果您嘗試卸載解決方案

執行下列步驟:

  1. 在目標環境中,檢查 「解決方案層 」連結,以查找依賴元件清單中最頂層的解決方案。
  2. 在源環境中,準備該解決方案的新版本,其中解決方案不包含依賴元件,或者具有不包含對所需元件的引用的依賴元件的更新版本。 您的目標是在新版本的解決方案中移除對必要元件的所有參照。
  3. 匯出解決方案的新版本。
  4. 在目標環境中, 升級 該解決方案。
  5. 重新嘗試解除安裝。

如果嘗試升級解決方案

在此案例中,您必須確認您想要刪除必要元件(切記只有在要刪除的元件上才會強制執行相依性)。

如果您不想要刪除元件,可以執行下列動作重新將元件加回,以修正解決方案的新版本:

  1. 在目標環境中,卸載暫存解決方案 (結尾為 _Upgrade 解決方案)。
  2. 在源環境中,將所需的元件添加回解決方案。
  3. 匯出新版本。
  4. 重新嘗試升級。

如果是有意進行的刪除,您必須移除該相依性。 嘗試上一節中概述的步驟, 如果嘗試卸載解決方案

層數與相依性

相依元件可以分層,因此您可能需要變更一個以上的解決方案,才能完全移除相依性。 相依性框架只會計算必要和相依元件最頂層間的相依性關係。 這表示從相依元件解決方案的最頂端到最底端,您都需要作業。

請參考下列案例:

選擇要卸載的解決方案。

您嘗試卸載解決方案 - 自訂實體,而該作業因相依性而受阻。

阻止卸載該解決方案的相依性。

您可以透過選取解決方案層上的 new_numberfield 屬性,開始診斷相依性。 您會看到以下螢幕:

New_numberfield 屬性與測試工作流程之間的相依性。

因為相依性只會在每個元件間的最頂層建立,所以第一個步驟是處理 SolutionCustomEntity 中的 new_numberfield 屬性與 SolutionWorkflow3 中的測試工作流程工作流程之間的相依性。

為了移除相依性,您決定要卸載 SolutionWorkflow3。 您這麼做了,但是當您嘗試再次卸載該解決方案時,會看到相同的相依性頁面:

阻止卸載解決方案 - 自訂實體的相依性。

但是, 不再列出 new_numberfield 列,即使它存在於更多圖層中也是如此。

移除未受管理之相依性的動作

若要移除非未受管理的相依性,您必須直接在元件上執行,而不是在其所屬的解決方案中執行。 例如,如果要刪除列和窗體之間的依賴關係,則必須在窗體設計器中對其進行編輯,並從窗體中刪除該列。 選擇 「保存併 發佈 後,將刪除依賴項。

注意

  • 顯示相依性命令可讓您執行動作以檢視、移除相依性、編輯元件或刪除元件。 其他資訊:查看元件的相依性
  • 當您嘗試刪除具有依賴關係的元件時,將顯示“查看依賴項 ”按鈕。 儘管此螢幕允許您查看依賴項,但它不允許您執行作。
  • 刪除依賴元件時,該作將 刪除所有依賴項以及元件。

若要檢視元件的相依性,請從解決方案區域打開所需的解決方案,選擇元件旁邊的垂直省略符號,然後選擇進階>顯示相依性

相依性頁面有兩個截然不同的部分:

  • 依賴元件:依賴於所選取的元件清單。 換句話說,這些元件將此列作為其必需元件。
  • 所需元件:此列工作所需的元件清單。 換句話說,這些元件將此列作為其依賴元件。

元件相依性。

後續步驟