Überblick über Entfernen von Abhängigkeiten
Lösungskomponenten sind oft von anderen Lösungskomponenten abhängig. Sie können keine Lösungskomponente löschen, von der andere Lösungskomponenten abhängig sind. Abhängigkeiten sind Datensätze, die vom Lösungsframework automatisch erstellt werden, um zu verhindern, dass erforderliche Komponenten gelöscht werden, während eine oder mehrere abhängige Komponenten weiterhin Verweise darauf enthalten. Ein Beispiel für eine Abhängigkeit lautet wie folgt: Wenn für die ordnungsgemäße Funktion eines Formulars ein Feld erforderlich ist, funktioniert das Formular nicht mehr, wenn Sie jemals versuchen sollten, eine Aktion auszuführen, die zum Löschen dieses Felds führt.
Notiz
In diesem Artikel bedeutet Löschen, dass die Komponente vollständig aus dem System entfernt wird.
In diesem Artikel besprechen wir, wie mit diesen Abhängigkeiten umgegangen wird und welche Strategien Sie anwenden können, um nicht mehr benötigte Abhängigkeiten zu entfernen.
Abhängigkeiten von nicht verwalteten vs. verwalteten Komponenten
Zunächst ist es wichtig zu verstehen, dass Abhängigkeiten nur Operationen verhindern, die eine erforderliche Komponente löschen. Die Aktionen, die eine Komponente löschen können, sind unterschiedlich, je nachdem, ob es sich um eine unverwaltete oder verwaltete Komponente handelt.
Nicht verwaltete Komponenten
Diese Komponenten werden in der aktiven Lösung durch eine einzige Schicht dargestellt. Jede Löschen Operation an einer solchen Komponente führt zur vollständigen Entfernung der Komponente.
Verwaltete Komponenten
Die Löschung verwalteter Komponenten hängt von mehreren Faktoren ab: der Anzahl der Lösungsschichten, der relativen Position der Schicht, die deinstalliert wird, und den Publishern der Komponenten. Berücksichtigen Sie beispielsweise beim Löschen einer Komponente die folgenden Szenarien und das zu erwartende Verhalten bei der Deinstallation der verschiedenen Schichten.
Beispiel-Szenarien
Die folgenden Beispielszenarien veranschaulichen, was mit den Lösungsschichten geschieht, wenn Lösungen deinstalliert werden.
Szenario 1: Deinstallation einer einzelnen Lösungsschicht
Die Deinstallation von Lösung 1 führt zu einer Löschung der Komponente, da sie die einzige Ebene für die Komponente ist.
Szenario 2: Deinstallieren von Lösungsebenen von verschiedenen Publishern
- Die Deinstallation von Lösung 2 führt nicht zur Löschung einer Komponente. Nur diese Schicht wird entfernt.
- Die Deinstallation von Lösung 1 führt zu einer Komponentenlöschung, da die Aktion in der Basisschicht stattfindet. Tatsächlich kann Lösung 1 in diesem Szenario nicht deinstalliert werden, da eine Lösung von einem anderen Publisher die Komponente erweitert.
Szenario 3: Deinstallation mehrerer Lösungsschichten von verschiedenen Publishern
- Die Deinstallation von Lösung 3 führt nicht zur Löschung einer Komponente. Nur diese Schicht wird entfernt.
- Die Deinstallation von Lösung 2 führt nicht zur Löschung einer Komponente. Nur diese Schicht wird entfernt.
- Die Deinstallation von Lösung 1 führt nicht zur Löschung von Komponenten, da es in diesem Fall eine andere Lösung desselben Publishers gibt (Publisher A = Publisher C)). Die Plattform entfernt die Schicht aus Lösung 1 und ersetzt sie durch die Schicht aus Lösung 3.
Szenario 4: Deinstallieren von Lösungsschichten in einer nicht verwalteten Anpassung
- Die Deinstallation der aktiven (nicht verwalteten) Ebene führt nicht zur Löschung einer Komponente. Nur diese Schicht wird entfernt. Beachten Sie, dass Sie die aktive Lösung nicht deinstallieren können, aber Sie können Komponenten entfernen, indem Sie die Funktion Aktive Anpassung entfernen verwenden.
- Die Deinstallation von Lösung 1 verursacht eine Komponentenlöschung. Die Aktion findet in der Basisebene statt. Im Gegensatz zu Szenario 2 können Sie Lösung 1 deinstallieren. Die Aktive Lösung wird nicht als Erweiterung betrachtet, und beide Ebenen werden entfernt.
Seite „Abhängigkeiten anzeigen“
Der Befehl Abhängigkeiten anzeigen listet die Abhängigkeiten für die ausgewählte Lösung oder Lösungskomponente auf. Es kann durch aufgerufen werden:
- Wählen Sie Abhängigkeiten anzeigen auf der Lösungsseite.
- Wählen Sie Erweitert>Abhängigkeiten anzeigen in einer Lösung, wenn eine Lösungskomponente ausgewählt wird.
- Der Versuch, eine Lösung zu deinstallieren, wodurch die Plattform erkennt, dass Abhängigkeiten bestehen.
Auf der Seite „Abhängigkeiten“ können Sie die Komponente öffnen, entfernen oder löschen. Mehr Informationen: Abhängigkeiten für eine Komponente anzeigen
Diagnostizieren von Abhängigkeiten
Betrachten wir das folgende Szenario. Die unten stehende Organisation hat zwei Lösungen: Lösung - Workflow und Lösung - Benutzerdefinierte Entität.
Der Besitzer der Organisation entschied, dass sie Lösung - Benutzerdefinierte Entität nicht mehr benötigt, versuchte sie zu löschen und erhielt die folgende Seite:
Ohne ins Detail zu gehen, können wir daraus schließen, dass bei der Deinstallation der Lösung versucht wird, eine Entität namens Benutzerdefinierte Entität und drei Felder Benutzerdefinierte Entität, Name und Nummernfeldzu löschen, wobei alle vier Komponenten Abhängigkeiten aufweisen.
Notiz
Die Deinstallation der Lösung könnte möglicherweise weitere Komponenten löschen, aber da diese keine Abhängigkeiten haben, erscheinen sie nicht in der Liste.
Der nächste Schritt ist die Überprüfung der Verknüpfung Lösungsebenen (äußerste rechte Spalte) für jede Abhängigkeit. Das wird Ihnen bei der Entscheidung helfen, was zu tun ist, um die Abhängigkeit zu entfernen.
Die folgende Abbildung zeigt Details der Abhängigkeit zwischen der Entität (Benutzerdefinierte Entität) und dem Prozess (Test Workflow).
Anhand der angezeigten Daten können Sie erkennen, dass die abhängige Komponente zu einer Lösung mit dem Namen SolutionWorkflow gehört. Um diese Abhängigkeit zu entfernen, können wir beides tun:
- Aktualisieren Sie die Definition des Workflows in SolutionWorkflow, indem Sie alle Verweise auf die Entität oder ihre Unterkomponenten entfernen. Dann Update oder Upgrade die Lösung.
- Die SolutionWorkflow-Lösung deinstallieren.
- Entfernen Sie den Workflow aus einer neuen Version der SolutionWorkflow-Lösung und führen Sie dann ein Upgrade durch.
Da jede einzelne abhängige Komponente das Entfernen der Lösung verhindern kann, empfehlen wir, dass Sie alle Abhängigkeiten überprüfen und alle erforderlichen Änderungen in einem einzigen Vorgang vornehmen.
Die folgende Abbildung zeigt die Abhängigkeitsdetails zwischen der Entität (Benutzerdefinierte Entität) und einer modellbasierten App (Meine App).
Anhand der angezeigten Daten können Sie sehen, dass die abhängige Komponente zu einer Lösung mit dem Namen Aktiv gehört. Dies zeigt an, dass die Abhängigkeit durch den Import einer nicht verwalteten Lösung oder durch eine nicht verwaltete Anpassung erstellt wurde, die über die moderne Benutzeroberfläche oder API ausgeführt wurde.
Um diese Abhängigkeit zu entfernen, können Sie entweder
- Bearbeiten Sie die Definition der Modellbasierten Apps, um jeden Verweis auf die Entität oder ihre Unterkomponenten zu entfernen. Da Modellbasierte Apps das Publizieren unterstützen, müssen Sie Ihre Änderungen veröffentlichen.
- Löschen Sie die Modellbasierte Apps.
Notiz
Die Deinstallation einer nicht verwalteten Lösung ist keine Option zum Entfernen dieser Abhängigkeit, da nicht verwaltete Lösungen nur ein Mittel zum Gruppieren von Komponenten sind.
Aktionen zum Entfernen einer verwalteten Abhängigkeit
Verwaltete Abhängigkeiten sind diejenigen, bei denen die abhängige Komponente mit einer verwalteten Lösung verknüpft ist. Um diese Art der Abhängigkeit zu lösen, müssen Sie sich an die Lösung halten, zu der die Komponente hinzugefügt wurde. Diese Aktion kann je nach dem, was Sie zu tun versuchen, unterschiedlich sein.
Wenn Sie versuchen, eine Lösung zu deinstallieren
führen Sie die folgenden Schritte aus:
- Untersuchen Sie in der Zielorganisation den Link Lösungsebenen, um die oberste Lösung auf der Liste der abhängigen Komponente zu finden.
- Bereiten Sie in der Quell-Organisation eine neue Version dieser Lösung vor, wobei die Lösung entweder die abhängige Komponente nicht enthält oder eine aktualisierte Version der abhängigen Komponente besitzt, die keine Verweise auf die erforderliche Komponente enthält. Ihr Ziel ist es, jeden Verweis auf die erforderlichen Komponenten in der neuen Version der Lösung zu entfernen.
- Exportieren Sie die neue Version der Lösung.
- In der Zielorganisation: Aktualisierung diese Lösung.
- Wiederholen Sie die Deinstallation.
Wenn Sie versuchen, eine Lösung zu aktualisieren
In diesem Fall müssen Sie bestätigen, dass Sie die erforderliche Komponente löschen wollten (denken Sie daran, dass Abhängigkeiten nur bei Komponenten erzwungen werden, die gelöscht werden).
Wenn Sie die Komponente nicht löschen wollten, können Sie die neue Version der Lösung reparieren, indem Sie die Komponente wieder hinzufügen, indem Sie wie folgt vorgehen:
- Deinstallieren Sie in der Zielorganisation die abgestufte Lösung (die Lösung, die mit _Upgrade endet).
- Fügen Sie in der Ausgangsorganisation die erforderliche(n) Komponente(n) wieder zur Lösung hinzu.
- Exportieren Sie die neue Version.
- Versuchen Sie das Upgrade erneut.
Wenn die Löschung absichtlich erfolgt, müssen Sie die Abhängigkeit entfernen. Versuchen Sie die im vorhergehenden Abschnitt „Wenn Sie versuchen, eine Lösung zu deinstallieren“ beschriebenen Schritte.
Ebenen und Abhängigkeiten
Die abhängigen Komponenten können geschichtet sein, so dass Sie eventuell mehr als eine Lösung ändern müssen, um eine Abhängigkeit vollständig zu entfernen. Der Abhängigkeitsrahmen berechnet nur die Abhängigkeiten zwischen den obersten Schichten für die erforderlichen und abhängigen Komponenten. Das bedeutet, dass Sie sich von den Lösungen der abhängigen Komponente von oben nach unten vorarbeiten müssen.
Betrachten Sie folgendes Szenario:
Sie versuchen, Lösung - Benutzerdefinierte Entität zu deinstallieren, und der Vorgang wird durch Abhängigkeiten blockiert.
Sie beginnen mit der Diagnose der Abhängigkeit, indem Sie Lösungsebenen auf das Attribut new_numberfield wählen. Sie sehen den folgenden Bildschirm:
Da Abhängigkeiten nur zwischen den obersten Schichten jeder Komponente erzeugt werden, besteht der erste Schritt darin, sich mit der Abhängigkeit zwischen dem Attribut new_numberfield in SolutionCustomEntity und dem Test Workflow Workflow in SolutionWorkflow3 zu befassen.
Um die Abhängigkeit zu entfernen, entschließen Sie sich, SolutionWorkflow3 zu deinstallieren. Sie tun dies, aber wenn Sie versuchen, die Lösung erneut zu deinstallieren, werden Sie von der gleichen Seite der Abhängigkeiten präsentiert:
Das Attribut new_numberfield wird jedoch nicht mehr aufgeführt, auch wenn es in mehreren Ebenen existierte.
Aktionen zur Beseitigung einer nicht verwalteten Abhängigkeit
Um nicht verwaltete Abhängigkeiten zu entfernen, müssen Sie direkt auf die Komponenten einwirken, nicht auf die Lösungen, zu denen sie gehören. Wenn Sie z.B. die Abhängigkeiten zwischen einem Attribut und einem Formular entfernen möchten, müssen Sie es im Formular-Editor bearbeiten und das Attribut aus dem Formular entfernen. Die Abhängigkeit wird entfernt, nachdem Sie Speichern und Veröffentlichen gewählt haben.
Anmerkung
- Mit dem Befehl Abhängigkeiten anzeigen können Sie Maßnahmen ergreifen, um die Abhängigkeit anzuzeigen, zu entfernen, die Komponente zu bearbeiten oder zu löschen. Mehr Informationen: Abhängigkeiten für eine Komponente anzeigen
- Sie können auch die abhängige Komponente löschen. Diese Aktion löscht alle Abhängigkeiten zusammen mit der Komponente.
Um die Abhängigkeiten einer Komponente anzuzeigen, öffnen Sie im Bereich Lösungen die gewünschte Lösung, wählen Sie die vertikalen Auslassungspunkte neben der Komponente und dann Erweitert>Abhängigkeiten anzeigen.
Die Seite der Abhängigkeiten besteht aus zwei verschiedenen Teilen:
- Abhängige Komponenten: Eine Liste von Komponenten, die von dem ausgewählten Feld abhängen. Mit anderen Worten, diese Komponenten haben dieses Feld als ihre erforderliche Komponente.
- Erforderliche Komponenten: Eine Liste der Komponenten, die dieses Feld für die Arbeit benötigt. Mit anderen Worten, diese Komponenten haben dieses Feld als abhängige Komponente.