Verbessern Sie die Leistung, Stabilität und Zuverlässigkeit Ihrer Lösung

Lösungen werden verwendet, um Power Platform Objekte wie Apps, Tabellen, Flows, Webressourcen und Plug-Ins zu verteilen. Dieser Artikel gibt eine Einführung in die Lösungsprüfungs-Funktion, ein leistungsstarkes Tool, das eine umfangreiche statische Analyseprüfung Ihrer Lösungsobjekte anhand einer Reihe von Regeln für bewährte Methoden durchführt.. Durch die Verwendung der Lösungsprüfung können Sie problematische Muster in Ihren Komponenten schnell identifizieren und erhalten detaillierte Berichte, die Probleme und betroffene Komponenten hervorheben und Links zu Dokumentationen zur Lösung der einzelnen Probleme bereitstellen. Dadurch wird sichergestellt, dass Ihre Lösungen im Hinblick auf Leistung, Stabilität und Zuverlässigkeit optimiert sind.

Beispielergebnisse und Details für Lösungsprüfer

Der Lösungsprüfer arbeitet mit unverwalteten Lösungen, die aus einer Umgebung exportiert werden können.

Sie können die Lösungsprüfung entweder in Power Apps (make.powerapps.com) oder mit PowerShell ausführen.

Wie die Lösungsprüfung Ihnen hilft

Um komplexen Geschäftsanforderungen gerecht zu werden, erstellen Ersteller häufig äußerst ausgefeilte Lösungen, die die Power Platform anpassen und erweitern. Mit fortgeschrittenen Implementierungen geht ein erhöhtes Risiko einher, dass Probleme mit Leistung, Stabilität und Zuverlässigkeit entstehen, die sich negativ auf die Nutzererfahrung auswirken können. Das Erkennen dieser Probleme und das Verstehen, wie sie behoben werden können, kann kompliziert und zeitaufwendig sein. Mit der Funktion zur Lösungsüberprüfung können Sie Ihre Lösung innerhalb von Sekunden prüfen, wobei ein Satz von Best-Practice-Regeln verwendet wird, um problematische Muster schnell zu identifizieren. Nach Abschluss der Überprüfung erhalten Sie in Power Apps sowie in einer E-Mail-Nachricht einen detaillierten Bericht, in dem die identifizierten Probleme, die betroffenen Komponenten und der betroffene Code sowie Links zur Dokumentation aufgeführt sind, in der beschrieben wird, wie die einzelnen Probleme behoben werden können.

Der Lösungsprüfer analysiert die Lösungskomponente:

  • Dataverse benutzerdefinierte Workflowaktivitäten
  • Dataverse-Webressourcen (HTML) und JavaScript
  • Dataverse-Konfigurationen, z. B. SDK-Meldungsschritte
  • Power Automate-Flows (über den Flow-Checker)
  • Power Fx-Ausdrücke (über die App-Überprüfung)

Anmerkung

  • Die Lösungsüberprüfung unterstützt globale Variablen für ECMAScript 2015 (ES6) und bis zu ECMAScript 2018 (ES9)-Syntax. Wenn JavaScript mithilfe globaler Variablen nach ES6 oder mithilfe von Syntax nach ES9 erkannt wird, wird ein Problem mit der nicht unterstützten Websyntax für die Webressource gemeldet.
  • Die Verwendung der Lösungsüberprüfung garantiert nicht, dass ein Lösungsimport erfolgreich ist. Die für die Lösung durchgeführten statischen Analyseprüfungen kennen den konfigurierten Status der Zielumgebung nicht, und der Erfolg des Imports kann von anderen Lösungen oder Konfigurationen in der Umgebung abhängen.

Führen Sie die Lösungsprüfung aus

  1. Melden Sie sich bei Power Apps an.

  2. Wählen Sie im linken Bereich Lösungen. Wenn sich das Element nicht im linken Seitenbereich befindet, wählen Sie …Mehr und dann das gewünschte Element aus.

  3. Neben der nicht verwalteten Lösung, die Sie analysieren möchten, wählen Sie ... aus, zeigen Sie auf Lösungsprüfung, und wählen Sie dann Ausführen aus.

    Lösungsprüfer-Befehl ausführen

  4. Die Befehlsschaltfläche Solution checker zeigt eine Ladeanzeige an, und in der Spalte Lösungsprüfung der Liste Lösung wird der Status Wird ausgeführt… angezeigt.

Lösungsprüfer-Status

Anmerkung

  • Die Analyse durch den Lösungsprüfer kann einige Minuten in Anspruch nehmen.
  • Sie erhalten eine E-Mail-Benachrichtigung und eine Benachrichtigung im Bereich Benachrichtigungen auf der Seite Power Apps, wenn die Überprüfung abgeschlossen ist.
  1. Zeigen Sie den Bericht an, sobald die Prüfung abgeschlossen ist.

Prüfvorgang abbrechen

Wenn Sie E-Mails senden, um Lösungen in Ihrer Umgebung übermitteln zu können, kann die Prüfung über den Statusbereich im oberen rechten Bereich der Seite Lösungen storniert werden.

Wenn Sie eine Prüfung abbrechen, läuft die Lösungsprüfung nicht weiter und der Lösungsprüfungsstatus kehrt zum vorherigen Zustand zurück.

Lösungsprüfungsstatus

Wenn Sie die Lösungsprüfung in Ihrer Umgebung installieren, wird die Spalte Lösungsprüfung in der Liste Lösungen verfügbar. In dieser Spalte werden die Lösungsanalysestatus für eine Lösung angezeigt.

Status Beschreibung
Ist nicht ausgeführt worden Die Lösung wurde nicht analysiert.
Wird ausgeführt Die Lösung wird analysiert.
Konnte nicht abgeschlossen werden Lösungsanalyse wurde angefordert, aber die Analyse wurde nicht erfolgreich abgeschlossen.
Ergebnisse ab Datum und Uhrzeit Lösungsanalyse abgeschlossen und Ergebnisse können heruntergeladen werden.
Konnte nicht abgeschlossen werden. Ergebnis vom Datum und Uhrzeit Die aktuelle Analyseanforderung in nicht erfolgreich abgeschlossen. Die letzten erfolgreichen Ergebnisse können heruntergeladen werden.
Geprüft von Microsoft Dies ist eine Microsoft-verwaltete Lösung. Lösungsanalyse ist für diese Lösungen nicht erlaubt.
Geprüft von Publisher Dies ist eine nicht Microsoft-verwaltete Lösung. Derzeit ist die Lösungsanalyse für diese Lösungen nicht verfügbar.

Wiederholen Sie den Lösungsprüferbericht

Wenn eine Lösungsprüfung abgeschlossen ist, können Sie den Analysebericht im Portal anzeigen oder den Bericht über Ihren Webbrowser herunterladen. Im Portal haben Sie die Möglichkeit, die Ergebnisse nach Problem, Ort oder Schweregrad zu sortieren und detaillierte Informationen zu den in Ihrer Lösung erkannten Problemen anzuzeigen.

  1. Wählen Sie im linken Bereich Lösungen. Wenn sich das Element nicht im linken Seitenbereich befindet, wählen Sie …Mehr und dann das gewünschte Element aus.

  2. Wählen Sie neben der nicht verwalteten Lösung, für die Sie den Bericht über den Solution Checker anzeigen möchten, ..., zeigen Sie auf Solution Checker, und wählen Sie dann Ergebnisse anzeigen.

  3. Wählen Sie ein Problem aus, um die Details und Anleitungen zur Lösung anzuzeigen.

    Beispielergebnisse und Drilldowndetails der Lösungsprüfung

Die Ergebnisse der Lösungsprüfung stehen auch zum Download bereit. Die ZIP-Datei der Lösungsprüfung wird in den Ordner heruntergeladen, der von Ihrem Webbrowser angegeben wurde. Der Downloadbericht ist im Excel-Format und enthält mehrere Visualisierungen und Spalten, die Ihnen dabei helfen, die Auswirkungen, die Art und den Ort jedes in Ihrer Lösung erkannten Problems zu identifizieren. Ein Link zu detaillierten Anleitungen zur Behebung des Problems wird ebenfalls bereitgestellt.

  1. Wählen Sie im linken Bereich Lösungen. Wenn sich das Element nicht im linken Seitenbereich befindet, wählen Sie …Mehr und dann das gewünschte Element aus.
  2. Wählen Sie neben der nicht verwalteten Lösung, für die Sie den Bericht über den Solution Checker herunterladen möchten, ..., zeigen Sie auf Solution Checker, und wählen Sie dann Ergebnisse herunterladen.
  3. Die ZIP-Datei des Lösungsprüfers wird in den Ordner heruntergeladen, der von Ihrem Webbrowser angegeben wurde.

Hier finden Sie eine Zusammenfassung einer Spalte im Bericht.

Berichtsspalte Beschreibung Gilt für Komponente
Problem Der Titel des in der Lösung identifizierten Problems. Alle
Kategorie Die Kategorisierung des identifizierten Problems, z. B. Leistung, Wartbarkeit, Nutzung, Unterstützbarkeit, Design, Sicherheit, Barrierefreiheit oder Upgradebereitschaft. Alle
Schweregrad Stellt die potenziellen Auswirkungen des identifizierten Problems dar. Verfügbare Auswirkungstypen sind Kritisch, Hoch, Mittel, Niedrig und Informativ. Alle
Anweisungen Link zum Artikel mit Einzelheiten zum Problem, zu den Auswirkungen und zur empfohlenen Maßnahme. Alle
Komponente Die Lösungskomponente, in der das Problem identifiziert wird. Alle
Standort Der Speicherort und/oder die Quelldatei der Komponente, in der das identifizierte Problem aufgetreten ist, beispielsweise der Name der Assembly oder der JavaScript-Datei. Alle
Zeile # Der Zeilennummernverweis des Problems in der betroffenen Webressourcenkomponente. Webressourcen
Modul Name des Moduls, in dem das im Assembly identifizierte Problem erkannt wurde. Benutzerdefinierte Workflow-Aktivität
Typ Art des in der Baugruppe identifizierten Problems. Benutzerdefinierte Workflow-Aktivität
Mitglied Typ des erkannten Problems in der Assembly. Benutzerdefinierte Workflow-Aktivität
Anweisung Die Codeanweisung oder die Konfiguration, die das Problem auslöst. Alle
Kommentare Details zum Problem, einschließlich allgemeiner Schritte zur Problemlösung. Alle

Lösungsprüfungsregeln lokal ausführen

Sie können Lösungsprüfregeln in Ihrer Entwicklungsumgebung ausführen, um Probleme viel früher zu erkennen, während Sie Ihre Lösungsressourcen erstellen. Dies wird derzeit für Webressourcen (JavaScript und TypeScript unterstützt). Weitere Einzelheiten finden Sie im NPM-Paket @microsoft/eslint-plugin-power-Apps.

Lösungsprüfung mit PowerShell ausführen

Ein PowerShell-Modul ist ebenfalls verfügbar, das Sie verwenden können, um direkt mit dem Service zu interagieren. Das Microsoft.PowerApps.Checker.PowerShell-Modul kann zur Analyse von nicht verwalteten Lösungen für Power Apps-Umgebungen oder zur Automatisierung und Integration des Dienstes in Ihre Build und Release Pipelines verwendet werden. Mehr Informationen: Microsoft.PowerApps.Checker.PowerShell Übersicht

Bewährte Methoden, die vom Lösungsprüfer verwendet werden

In der folgenden Tabelle sind Komponententyp, Regelbeschreibung, Schweregrad und Kategorie aufgeführt. Kritische Verstöße werden blockiert oder es wird gewarnt, wenn die Durchsetzung der Lösungsprüfung in verwalteten Umgebungen konfiguriert ist. Weitere Informationen: Lösungsüberprüfung in verwalteten Umgebungen verwenden

Lösungskomponente Regelname Regelbeschreibung Schweregrad Kategorie
Plug-in oder Workflowaktivität meta-remove-dup-reg Vermeiden Sie doppelte Dataverse-Plugin-Registrierungen. Kritisch Leistung
Plug-in oder Workflow-Aktivität meta-avoid-reg-no-attribute Fügen Sie Filterattribute mit Dataverse-Plugin-Registrierungen hinzu. Mäßig Leistung
Plug-in oder Workflow-Aktivität meta-avoid-reg-retrieve Seien Sie vorsichtig mit Dataverse-Plugins, die für Retrieve- und RetrieveMultiple-Nachrichten registriert sind. Mäßig Leistung
Plug-in oder Workflowaktivität meta-remove-inactive Inaktive Konfigurationen unter Dataverse entfernen. Niedrig Verwaltbarkeit
Plug-in oder Workflowaktivität meta-avoid-crm4-event Verwenden Sie keine Microsoft Dynamics CRM 4.0-Plug-In-Registrierungs-Phase. Mäßig Upgradebereitschaft
Plug-in oder Workflowaktivität meta-avoid-retrievemultiple-annotation Vermeiden Sie die Registrierung eines Plug-Ins bei RetrieveMultiple der Anmerkung. Hoch Verbrauch
Modellbasierte App meta-license-sales-entity-operations Die Lösung enthält Entitäten mit eingeschränkten SDK-Nachrichten und -Vorgängen, für die eine gültige Dynamics 365-Lizenz erforderlich ist. Niedrig Lizenzierung
Modellbasierte App meta-license-fieldservice-customcontrols Die Lösung enthält benutzerdefinierte Steuerelemente, die eine gültige Dynamics 365 Field Service-Lizenz erfordern. Niedrig Lizenzierung
Modellbasierte App meta-license-fieldservice-entity-operations Die Lösung enthält Entitäten mit eingeschränkten SDK-Nachrichten und -Vorgängen, die eine gültige Dynamics 365 Field Service-Lizenz erfordern. Niedrig Lizenzierung
Webressourcen use-async Interagieren mit HTTP- und HTTPS-Ressourcen asynchron. Kritisch Leistung
Webressourcen avoid-modals Vermeiden Sie die Nutzung von modalen Dialogfelder. Hoch Unterstützbarkeit
Webressourcen avoid-dom-form Hoch Supportfähigkeit
Webressourcen avoid-dom-form-event Hoch Supportfähigkeit
Webressourcen avoid-crm2011-service-odata Zielen Sie nicht auf den Microsoft Dynamics CRM 2011 OData-2.0-Endpunkt ab. Kritisch Upgradebereitschaft
Webressourcen avoid-crm2011-service-soap Zielen Sie nicht auf die Microsoft Dynamics CRM 2011 SOAP-Services ab. Kritisch Upgradebereitschaft
Webressourcen avoid-loadtheme Verwenden Sie nicht die loadTheme Fluent v8-API. Niedrig Supportfähigkeit
Webressourcen avoid-browser-specific-api Verwenden Sie keine veralteten Internet Explorer-APIs oder Browser-Plug-ins. Kritisch Upgradebereitschaft
Webressourcen avoid-unpub-api Hoch Supportfähigkeit
Webressourcen avoid-window-top Hoch Supportfähigkeit
Webressourcen avoid-2011-api Verwenden Sie kein veraltetes Microsoft Dynamics CRM 2011-Objektmodell. Folgen Sie stattdessen der Dataverse Web-API-Dokumentation. Hoch Upgradebereitschaft
Webressourcen use-relative-uri Verwenden Sie keine absoluten Dataverse-Endpunkt-URLs. Mäßig Verwaltbarkeit
Webressourcen use-cached-webresource Mäßig Leistung
Webressourcen use-client-context Nutzen Sie Client-Kontexte. Mäßig Upgradebereitschaft
Webressourcen use-navigation-api Verwenden Sie Navigations-API-Parameter. Mäßig Upgradebereitschaft
Webressourcen use-offline Mäßig Upgradebereitschaft
Webressourcen do-not-make-parent-assumption Hoch Design
Webressourcen use-org-setting Nutzen Sie Organisationseinstellungen. Mäßig Upgradebereitschaft
Webressourcen use-global-context Mäßig Upgradebereitschaft
Webressourcen use-grid-api Verwenden Sie Gitter-APIs. Mäßig Upgradebereitschaft
Webressourcen use-utility-dialogs Mäßig Verbrauch
Webressourcen avoid-isActivityType Ersetzen Sie die Methode Xrm.Utility.isActivityType durch die neue Methode Xrm.Utility.gettableMetadata und verwenden Sie sie nicht in den Menübandregeln. Mäßig Upgradebereitschaft
Webressourcen meta-avoid-silverlight Die Verwendung von Silverlight-Webressourcen ist veraltet. Mäßig Upgradebereitschaft
Webressourcen remove-debug-script Verwenden Sie keine Debugskripts in Nicht-Entwicklungsumgebungen. Mäßig Verbrauch
Webressourcen use-strict-mode Verwenden Sie nach Möglichkeit den strikten Modus. Mäßig Verbrauch
Webressourcen use-strict-equality-operators Verwenden Sie strenge Gleichheitsoperatoren. Mäßig Verbrauch
Webressourcen avoid-eval Verwenden Sie nicht die Funktion eval oder deren funktionale Entsprechungen. Kritisch Sicherheit
Webressourcen avoid-with Den 'with'-Operator nicht verwenden. Hoch Leistung
Webressourcen remove-alert Verwenden Sie nicht die „alert“-Funktion oder ihre funktionalen Entsprechungen. Mäßig Verbrauch
Webressourcen remove-console Verwenden Sie keine Methoden auf der Konsole. Mäßig Verbrauch
Webressourcen avoid-ui-refreshribbon Vermeiden Sie die Verwendung von „refreshRibbon“ in „form onload“ und „EnableRule“. Kritisch Leistung
Webressourcen use-getsecurityroleprivilegesinfo Vermeiden Sie userSettings.securityRolePrivileges. Verwenden Sie stattdessen userSettings.getSecurityRolePrivilegesInfo. Hoch Leistung
Webressourcen use-appsidepane-api Verwenden Sie Xrm.App.sidePanes.createPane anstelle von Xrm.Panels.loadPanel. Mäßig Upgradebereitschaft
Webressourcen web-sdl-no-cookies HTTP-Cookies sind ein alter clientseitiger Speichermechanismus mit inhärenten Risiken und Einschränkungen. Verwenden Sie stattdessen Web Storage, IndexedDB oder andere moderne Methoden. Mäßig Sicherheit
Webressourcen web-sdl-no-document-domain Schreibvorgänge in die Eigenschaft „document.domain“ müssen überprüft werden, um eine Umgehung von Same-Origin-Prüfungen zu vermeiden. Die Verwendung von Top-Level-Domänen wie azurewebsites.net ist strengstens untersagt. Mäßig Sicherheit
Webressourcen web-sdl-no-document-write Aufrufe von document.write oder document.writeln manipulieren DOM direkt ohne jegliche Bereinigung und sollten vermieden werden. Verwenden Sie stattdessen document.createElement() oder ähnliche Methoden. Mäßig Sicherheit
Webressourcen web-sdl-no-html-method Direkte Aufrufe der Methode html() manipulieren oft (zum Beispiel im jQuery-Framework) das DOM ohne jegliche Bereinigung und sollten vermieden werden. Verwenden Sie stattdessen document.createElement() oder ähnliche Methoden. Mäßig Sicherheit
Webressourcen web-sdl-no-inner-html Zuweisungen zu innerHTML- oder outerHTML-Eigenschaften manipulieren DOM direkt ohne jegliche Bereinigung und sollten vermieden werden. Verwenden Sie stattdessen document.createElement() oder ähnliche Methoden. Mäßig Sicherheit
Webressourcen web-sdl-no-insecure-url Unsichere Protokolle wie HTTP oder FTP sollten durch ihre verschlüsselten Gegenstücke (HTTPS, FTPS) ersetzt werden, um zu vermeiden, dass potenziell sensible Daten im Klartext über nicht vertrauenswürdige Netzwerke gesendet werden. Mäßig Sicherheit
Webressourcen web-sdl-no-msapp-exec-unsafe Aufrufe von MSApp.execUnsafeLocalFunction() umgehen die Skriptinjektionsvalidierung und sollten vermieden werden. Mäßig Sicherheit
Webressourcen web-sdl-no-postmessage-star-origin Geben Sie immer einen bestimmten Zielursprung an, nicht „*“, wenn Sie Daten mit postMessage an andere Fenster senden, um Datenlecks außerhalb der Vertrauensgrenze zu vermeiden. Mäßig Sicherheit
Webressourcen web-sdl-no-winjs-html-unsafe Aufrufe von WinJS.Utilities.setInnerHTMLUnsafe() und ähnlichen Methoden führen keine Eingabevalidierung durch und sollten vermieden werden. Verwenden Sie stattdessen WinJS.Utilities.setInnerHTML(). Mäßig Sicherheit
Canvas-App app-formula-issues-high Gehen Sie zu Power Apps Formelreferenz für weitere Details. Kritisch Design
Canvas-App app-formula-issues-medium Weitere Details finden Sie in den Power Apps-Formelverweisen. Mäßig Design
Canvas-App app-formula-issues-low Weitere Informationen finden Sie unter den Formelreferenzen für Power Apps. Niedrig Entwurf
Canvas-App app-use-delayoutput-text-input Verwenden Sie in einigen Szenarien verzögertes Laden, um die Leistung zu verbessern. Mäßig Leistung
Canvas-App app-reduce-screen-controls Begrenzen Sie die Anzahl der App-Steuerelemente, um die Leistung zu verbessern. Mäßig Leistung
Canvas-App app-include-accessible-label Verwenden Sie explizite Beschriftungen, um die Barrierefreiheit der App zu verbessern. Mäßig Barrierefreiheit
Canvas-App app-include-alternative-input Stellen Sie sicher, dass alle interaktiven Elemente für alternative Eingaben zugänglich sind. Mäßig Barrierefreiheit
Canvas-App app-avoid-autostart Vermeiden Sie die Verwendung des Autostarts bei Spielern innerhalb einer App. Mäßig Barrierefreiheit
Desktop-Flow desktopflow-avoid-unsafe-password Im Flow werden Kennwörter auf unsichere Weise verwaltet. Hoch Sicherheit
Desktop-Flow desktopflow-avoid-subflow-recursion Es wurden rekursive Aufrufe zwischen Subflows erkannt, was zu einer Endlosschleife führen kann. Mäßig Design
Desktop-Flow desktopflow-avoid-infinite-loop Es wurde eine Endlosschleife im Flow erkannt, was dazu führen kann, dass sie endlos ausgeführt wird. Mäßig Design
Desktop-Flow desktopflow-avoid-incomplete-if-branch Unvollständige If-Aktion erkannt: Inhalt fehlt oder sie enthält nur Aktionen im Else-Zweig. Niedrig Entwurf
Desktop-Flow desktopflow-avoid-excessive-nested-ifs Verschachtelt, wenn Klauseln mehr als fünf Ebenen umfassen. Niedrig Verwaltbarkeit
Desktop-Flow desktopflow-avoid-empty-on-error-block Die Aktion „Auf-Block-Fehler“ ist leer und verarbeitet keine Fehler. Niedrig Design
Desktop-Flow desktopflow-limit-argument-count Die Gesamtzahl der Eingabe-/Ausgabevariablen überschreitet das Limit von 25 Variablen. Niedrig Verwaltbarkeit
Desktop-Flow desktopflow-input-argument-default-value Die Eingabe-/Ausgabevariablen verwenden keine Standardwerte. Niedrig Verwaltbarkeit
Desktop-Flow desktopflow-limit-variable-name-length Der Name der Variablen überschreitet das Limit von 25 Zeichen. Niedrig Verwaltbarkeit
Desktop-Flow desktopflow-zu-viele-warteaktionen-vermeiden Fehlverwendung von Warteaktionen erkannt: Mehr als 10 Warteaktionen können zu potenziellen Engpässen führen. Niedrig Leistung
Desktop-Flow desktopflow-avoid-immense-wait-duration Erhebliche Wartezeit erkannt, die das Limit von 600 Sekunden für hartkodierte Warteaktionen überschreitet. Niedrig Leistung

Siehe auch

Bewährte Methoden sowie Anweisungen zum Dataverse
Best Practices und Anleitungen für modellgetriebene Anwendungen
Häufige Probleme und Lösungen für Solution Checker