Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Lösningar används för att distribuera Power Platform-objekt, till exempel appar, tabeller, flöden, webbresurser och plugin-program. Den här artikeln introducerar funktionen för lösningskontroll, ett kraftfullt verktyg som utför en omfattande statisk analys av dina lösningsobjekt mot en uppsättning regler för bästa praxis. Genom att använda Lösningskontroll kan du snabbt identifiera problematiska mönster i dina komponenter och få detaljerade rapporter som belyser problem, berörda komponenter och ger länkar till dokumentation om hur du löser varje problem. Detta säkerställer att dina lösningar är optimerade för prestanda, stabilitet och tillförlitlighet.
Lösningskontrollen fungerar med icke-hanterade lösningar som kan exporteras från en miljö.
Du kan antingen köra Lösningskontroll från Power Apps (make.powerapps.com) eller genom att använda PowerShell.
Hur Lösningskontroll hjälper dig
För att leverera med det avancerade affärsprogrammet, kan utvecklare ofta få mycket avancerade lösningar som Anpassar och utökar Power Platform. Med avancerade implementeringar kommer en ökad risk där prestanda-, stabilitets- och tillförlitlighetsproblem introduceras, vilket kan påverka slutanvändarens upplevelse negativt. Det kan vara komplicerat och tidsödande att identifiera och förstå hur du kan lösa problemen. Med funktionen för lösningskontroll kan du inom några sekunder utföra en kontroll av din lösning, som använder en uppsättning bästa praxisregler för att snabbt identifiera problematiska mönster. När kontrollen är klar kan få du en detaljerad rapport i Power Apps och även ett e-postmeddelande med en lista över de problem som uppstår, komponenter och kod som påverkas och länkar till dokumentationen som beskriver hur du löser varje problem.
Lösningskontroll analyserar dessa lösningskomponenter.
- Dataverse Anpassade arbetsflödesaktiviteter
- Dataverse webbresurser (HTML och JavaScript)
- Dataverse konfiguration, till exempel steg för SDK-meddelandesteg
- Power Automate-flöden (via flödeskontrollen)
- Power Fx-uttryck (via programkontrollen)
Obs
- Lösningskontrollen stöder globala variabler för syntax ECMAScript 2015 (ES6) och upp till ECMAScript 2018 (ES9). När JavaScript identifieras med globala variabler senare än ES6 eller syntax senare än ES9 rapporteras ett syntaxprobem för webbresurser som inte stöds av webben.
- Genom att använda lösningskontrollen garanterar inte säkert att en lösningsimport lyckas. De statiska analyskontrollerna som utfördes mot lösningen känner inte till den konfigurerade statusen för målmiljön och importen kan vara beroende av andra lösningar eller konfigurationer i miljön.
Kör lösningskontroll
Logga in på Power Apps.
Välj Lösningar i vänstra fönstret. Om objektet inte finns i sidopanelsfönstret väljer du … Mer och markerar sedan det objekt du vill använda.
Bredvid den icke-hanterade lösningen som du vill analysera, välj ..., peka på lösningskontroll och välj kör.
Kommandoknappen Lösningskontroll har en laddningsindikator och du kommer att märka en Körs... i kolumnen Lösningskontroll i listan Lösning.
Obs
- Lösningskontrollen kan ta några minuter att slutföra analysen.
- Du får ett e-postmeddelande och ett meddelande i området Aviseringar i Power Apps området när kontrollen har slutförts.
- Visa rapporten när kontrollen har slutförts.
Avbryta en kontroll
När du har skickat en lösningskontroll i din miljö kan kontrollen annulleras via statusrutan i den övre högra delen av sidan lösningar.
Solution checker states
Tillstånd för lösningskontroll
När du installerar lösningskontrollen i den aktuella miljön blir kolumnen Lösningskontroll tillgänglig i listan Lösningar. Den här kolumnen visar lösningsanalystillstånd för en lösning.
| Land | Beskrivning |
|---|---|
| Har inte körts. | Lösningen har aldrig analyserats. |
| Körs | Lösningen analyseras. |
| Det gick inte att slutföra. | Lösningsanalysen har begärt men analysen slutfördes inte. |
| Resultaten från datum och tid | Lösningsanalysen har slutförts och resultatet är tillgängligt för hämtning. |
| Det gick inte att slutföra. Resultat från datum och tid | Senaste analysförfrågan kunde inte slutföras. Du kan hämta senaste lyckade resultat. |
| Kontrollerad av Microsoft | Det här är en Microsoft-hanterad lösning. Analys av lösningen tillåts inte på de här lösningarna. |
| Kontrollerat av Utgivare | Detta är en lösning som inte hanteras av Microsoft. För närvarande är lösningsanalys inte tillgängligt för dessa lösningar. |
Granska rapporten för lösningskontroll
När en lösningskontroll har slutförts kan du visa analysrapporten på portalen eller hämta rapporten från webbläsaren. På portalen finns alternativ för att sortera resultat efter problem, plats eller allvarlighetsgrad och visa detaljerad information för problem som upptäcktes i din lösning.
Välj Lösningar i vänstra fönstret. Om objektet inte finns i sidopanelsfönstret väljer du … Mer och markerar sedan det objekt du vill använda.
Markera bredvid den icke-hanterade lösningen som du vill visa rapporten för lösningskontroll, ..., peka på Lösningskontroll och välj Visa resultat.
Välj ett problem om du vill visa information om och vägledning om hur du ska lösa det.
Lösningskontrollen resultat kan också hämtas. Zip-filen för lösningskontroll hämtas till den mapp som angetts av din webbläsare. Den hämtade rapporten visas i Excel-format och innehåller flera visualiseringar och kolumner som hjälper dig att identifiera påverkan, typ och platsen för varje problem som identifierats i lösningen. Det finns även en länk till detaljerade anvisningar om hur du åtgärdar problemet.
- Välj Lösningar i vänstra fönstret. Om objektet inte finns i sidopanelsfönstret väljer du … Mer och markerar sedan det objekt du vill använda.
- Markera bredvid den icke-hanterade lösningen som du vill hämta rapporten för lösningskontroll, ..., peka på Lösningskontroll och välj Hämta resultat.
- Zip-filen för lösningskontroll hämtas till den mapp som angetts av din webbläsare.
Här följer en sammanfattning av varje kolumn i rapporten.
| Rapportkolumn | Beskrivning | Gäller komponent |
|---|---|---|
| Ärende | Rubriken för problemet identifieras i lösningen. | Alla |
| Kategori | Kategorisering av problemet som identifierats Prestanda, Underhåll, Användning, Stöd, Design, Säkerhet, Tillgänglighet eller Uppgraderingsberedskap. | Alla |
| Allvarlighetsgrad | Representerar den potentiella effekten av det identifierade problemet. Tillgängliga påverkanstyper är Kritisk, Hög, Mellan, Låg och information. | Alla |
| Vägledning | Länka till artikeln med information om problemet, påverkan och rekommenderad åtgärd. | Alla |
| Komponent | En lösningskomponent där problemet identifierades. | Alla |
| Location | Plats och/eller källfil för komponenten där problemet som identifierades inträffade, till exempel paketet eller JavaScript-filnamnet. | Alla |
| Rad nr | Radnummerreferensen till problemet i den påverkade webbresurskomponenten. | Webbresurser |
| Modul | Modulnamnet där problemet som identifierats i paketet identifierades. | Anpassad arbetsflödesaktivitet |
| Type | Typ av problem som identifierades i paketet. | Anpassad arbetsflödesaktivitet |
| Medlem | Medlem av problem som identifierades i paketet. | Anpassad arbetsflödesaktivitet |
| Utdrag | Kodutdrag eller konfigurationen som orsakade problemet. | Alla |
| Kommentarer | Information om problemet med lösningssteg på hög nivå. | Alla |
Kör lösningskontrollregler lokalt
Du kan köra regler för lösningskontroll i utvecklingsmiljön om du vill identifiera problem mycket snabbare när du skapar lösningsresurserna. Detta stöds för närvarande för webbresurser (JavaScript och TypeScript). Mer information finns i NPM-paketet @microsoft/eslint-plugin-power-apps.
Kör Lösningskontroll med PowerShell
Det finns en PowerShell-modul som du kan använda för att interagera direkt med tjänsten. Microsoft.PowerApps.Checker.PowerShell-modulen kan användas för analys av icke-hanterade lösningar för Power Apps-miljöer eller för att automatisera och integrera tjänsten i bygg-och-släpp-pipeline. Mer information: Översikt över Microsoft.PowerApps.Checker.PowerShell
Regler för bästa metod som används av lösningskontroll
I följande tabell visas komponenttyp, regelbeskrivning, allvarlighetsgrad och kategori. Kritiska kränkningar blockeras eller varnas när de konfigureras för tvingande lösningskontroll med hanterade miljöer. Mer information: Använd lösningskontroll i hanterade miljöer
| Lösningskomponent | Regelnamn | Regelbeskrivning | Allvarlighetsgrad | Kategori |
|---|---|---|---|---|
| Plug-in eller arbetsflödesaktivitet | meta-remove-dup-reg | Undvik dubbla registreringar av Dataverse-plugin-program. | Kritisk | Resultat |
| Plug-in eller arbetsflödesaktivitet | meta-avoid-reg-no-attribute | Inkludera attribut för filtrering med plugin-programregistreringar för Dataverse. | Medium | Resultat |
| Plug-in eller arbetsflödesaktivitet | meta-avoid-reg-retrieve | Var försiktig med plugin-program för registreringar för Dataverse som registrerats för Retrieve- och RetrieveMultiple-meddelanden. | Medium | Resultat |
| Plug-in eller arbetsflödesaktivitet | meta-remove-inactive | Ta bort inaktiva kanalkonfigurationer i Dataverse | Lägst | Underhållsmöjlighet |
| Plug-in eller arbetsflödesaktivitet | meta-avoid-crm4-event | Använd inte Microsoft Dynamics CRM 4.0 registreringsteg för plugin-program. | Medium | Uppgraderingsberedskap |
| Plug-in eller arbetsflödesaktivitet | meta-avoid-retrievemultiple-annotation | Undvik att registrera ett plugin-program för RetrieveMultiple av anteckningar. | Högst | Användning |
| Modellbaserat program | meta-license-sales-entity-operations | Lösningen innehåller enheter med begränsade SDK-meddelanden och åtgärder som kräver en giltig Dynamics 365-licens. | Lägst | Licensiering |
| Modellbaserat program | meta-license-fieldservice-customcontrols | Lösningen innehåller Anpassade kontroller som kräver en giltig Dynamics 365 Field Service-licens. | Lägst | Licensiering |
| Modellbaserat program | meta-license-fieldservice-entity-operations | Lösningen innehåller entiteter med begränsade SDK-meddelanden och åtgärder som kräver en giltig Dynamics 365 Field Service-licens. | Lägst | Licensiering |
| Webbresurser | use-async | Interagera asynkront med HTTP- och HTTPS-resurser. | Kritisk | Resultat |
| Webbresurser | avoid-modals | Undvik att använda modala dialogrutor. | Högst | Supportmöjlighet |
| Webbresurser | avoid-dom-form | Högst | Supportmöjlighet | |
| Webbresurser | avoid-dom-form-event | Högst | Supportmöjlighet | |
| Webbresurser | avoid-crm2011-service-odata | Rikta inte in dig på Microsoft Dynamics CRM 2011 OData 2.0-slutpunkten. | Kritisk | Uppgraderingsberedskap |
| Webbresurser | avoid-crm2011-service-soap | Rikta inte in dig på Microsoft Dynamics CRM 2011 SOAP-tjänster. | Kritisk | Uppgraderingsberedskap |
| Webbresurser | avoid-loadtheme | Använd inte loadTheme Fluent v8 API. |
Lägst | Supportmöjlighet |
| Webbresurser | avoid-browser-specific-api | Använd inte äldre API:er för Internet Explorer eller plugin-program för webbläsare. | Kritisk | Uppgraderingsberedskap |
| Webbresurser | avoid-unpub-api | Högst | Supportmöjlighet | |
| Webbresurser | avoid-window-top | Högst | Supportmöjlighet | |
| Webbresurser | avoid-2011-api | Använd inte inaktuell Microsoft Dynamics CRM 2011-objektmodellen. Följ i stället dokumentationen för Dataverse webb-API. | Högst | Uppgraderingsberedskap |
| Webbresurser | use-relative-uri | Använd inte absoluta slutpunkt-API:er för Dataverse för program. | Medium | Underhållsmöjlighet |
| Webbresurser | use-cached-webresource | Medium | Resultat | |
| Webbresurser | use-client-context | Använd klientkontexter. | Medium | Uppgraderingsberedskap |
| Webbresurser | use-navigation-api | Använd API-parametrar för navigering. | Medium | Uppgraderingsberedskap |
| Webbresurser | use-offline | Medium | Uppgraderingsberedskap | |
| Webbresurser | do-not-make-parent-assumption | Högst | Designa | |
| Webbresurser | use-org-setting | Använd organisationsinställningar. | Medium | Uppgraderingsberedskap |
| Webbresurser | use-global-context | Medium | Uppgraderingsberedskap | |
| Webbresurser | use-grid-api | Använda API:er för rutnät. | Medium | Uppgraderingsberedskap |
| Webbresurser | use-utility-dialogs | Medium | Användning | |
| Webbresurser | avoid-isActivityType | Ersätt Xrm.Utility.isActivityType-metod med nya Xrm.Utility.gettableMetadata och använd inte menyfliksområdets regler. | Medium | Uppgraderingsberedskap |
| Webbresurser | meta-avoid-silverlight | Användning av webbresursen Silverlight är inaktuell. | Medium | Uppgraderingsberedskap |
| Webbresurser | remove-debug-script | Undvik felsökningsskript i miljöer utan utveckling. | Medium | Användning |
| Webbresurser | use-strict-mode | Använd läget strikt när det är möjligt. | Medium | Användning |
| Webbresurser | use-strict-equality-operators | Använd strikta jämlika operatorer. | Medium | Användning |
| Webbresurser | avoid-eval | Använd inte eval-funktionen eller dess funktionella motsvarigheter. |
Kritisk | Säkerhet |
| Webbresurser | undvik-med | Använd inte med operatören. | Högst | Resultat |
| Webbresurser | remove-alert | Använd inte funktionen alert eller någon av dess funktionella motsvarigheter. | Medium | Användning |
| Webbresurser | remove-console | Undvik att använda metoder på konsolen. | Medium | Användning |
| Webbresurser | avoid-ui-refreshribbon | Undvik att använda refreshRibbon i form av onload och EnableRule. | Kritisk | Resultat |
| Webbresurser | use-getsecurityroleprivilegesinfo | Undvik userSettings.securityRolePrivileges. Använd userSettings.getSecurityRolePrivilegesInfo i stället. | Högst | Resultat |
| Webbresurser | use-appsidepane-api | Använd Xrm.App.sidePanes.createPane istället för Xrm.Panels.loadPanel. | Medium | Uppgraderingsberedskap |
| Webbresurser | web-sdl-no-cookies | HTTP-cookies är en gammal lagringsmekanism på klientsidan med inneboende risker och begränsningar. Använd webblagring, IndexedDB eller andra modern metodik i stället. | Medium | Säkerhet |
| Webbresurser | web-sdl-no-document-domain | Skriver till egendomen document.domain måste granskas för att undvika förbikoppling av kontroller av samma ursprung. Användning av toppdomäner som azurewebsites.net är strängt förbjuden. | Medium | Säkerhet |
| Webbresurser | web-sdl-no-document-write | Samtal till document.write eller document.writeln manipulerar DOM direkt utan någon sanering och bör undvikas. Använd document.createElement() eller liknande metoder i stället. | Medium | Säkerhet |
| Webbresurser | web-sdl-no-html-method | Direkta anrop till metoden html() manipulerar ofta (till exempel i jQuery-ramverket) DOM utan någon sanering och bör undvikas. Använd document.createElement() eller liknande metoder i stället. | Medium | Säkerhet |
| Webbresurser | web-sdl-no-inner-html | Tilldelningar till innerHTML eller outerHTML-egenskaper manipulerar DOM direkt utan någon sanering och bör undvikas. Använd document.createElement() eller liknande metoder i stället. | Medium | Säkerhet |
| Webbresurser | web-sdl-no-insecure-url | Oskyddade protokoll som HTTP eller FTP bör ersättas av deras krypterade protokoll (HTTPS, FTPS) så att potentiellt känsliga data skickas över nätverk som inte är betrodda i klartext. | Medium | Säkerhet |
| Webbresurser | web-sdl-no-msapp-exec-unsafe | Anrop till MSApp.execUnsafeLocalFunction() kringgår skriptinjektion validering och bör undvikas. | Medium | Säkerhet |
| Webbresurser | web-sdl-no-postmessage-star-origin | Ange alltid ett specifikt mål ursprung, inte * när du skickar data till andra fönster med hjälp av postMessage för att undvika att data uppstår utanför förtroendegränsen. | Medium | Säkerhet |
| Webbresurser | web-sdl-no-winjs-html-unsafe | Anrop till WinJS.Utilities.setInnerHTMLUnsafe() och liknande metoder utför ingen indatavalidering och bör undvikas. Använd WinJS.Utilities.setInnerHTML() i stället. | Medium | Säkerhet |
| Arbetsyteapp | app-formel-problem-hög | Gå till Power Apps formelreferens för ytterligare information. | Kritisk | Designa |
| Arbetsyteapp | app-formel-problem-medel | Mer information finns i Power Apps-formelreferenser. | Medium | Designa |
| Arbetsyteapp | app-formel-problem-låg | Mer information finns i Power Apps-formelreferenser. | Lägst | Designa |
| Arbetsyteapp | app-använd-delayoutput-text-indata | Använd fördröjd belastning i vissa situationer för att förbättra prestanda. | Medium | Resultat |
| Arbetsyteapp | app-förminska–skärm-kontroller | Begränsa antalet appkontroller för förbättrade prestanda. | Medium | Resultat |
| Arbetsyteapp | app-inkludera-tillgänglig-etikett | Använd explicita etiketter för att förbättra programmets tillgänglighet. | Medium | Hjälpmedel |
| Arbetsyteapp | app-inkludera-alternativ-indata | Kontrollera att alla interaktiva element är tillgängliga för alternativa indata. | Medium | Hjälpmedel |
| Arbetsyteapp | app-undvik-autostart | Undvik att använda autostart på spelare inom ett program. | Medium | Hjälpmedel |
| Datorflöde | desktopflow-avoid-unsafe-password | Lösenord hanteras osäkert i flödet. | Högst | Säkerhet |
| Datorflöde | desktopflow-avoid-subflow-recursion | Rekursiva anrop har identifierats mellan underflöden, vilket kan orsaka en oändlig loop. | Medium | Designa |
| Datorflöde | desktopflow-avoid-infinite-loop | En oändlig loop har identifierats i flödet, vilket kan leda till att den körs oändligt länge. | Medium | Designa |
| Datorflöde | desktopflow-avoid-incomplete-if-branch | Ofullständig If-åtgärd har identifierats, saknar innehåll eller innehåller bara åtgärder i Else-grenen. | Lägst | Designa |
| Datorflöde | desktopflow-avoid-excessive-nested-ifs | Kapslade If-satser överskrider fem nivåer. | Lägst | Underhållsmöjlighet |
| Datorflöde | desktopflow-avoid-empty-on-error-block | Åtgärden ”Vid blockfel” är tom och hanterar inte fel. | Lägst | Designa |
| Datorflöde | desktopflow-limit-argument-count | Det totala antalet indata-/utdatavariabler överskrider gränsen på 25 variabler. | Lägst | Underhållsmöjlighet |
| Datorflöde | desktopflow-input-argument-default-value | Indata-/utdatavariabler använder inte standardvärden. | Lägst | Underhållsmöjlighet |
| Datorflöde | desktopflow-limit-variable-name-length | Variabelnamnet överskrider gränsen på 25 tecken. | Lägst | Underhållsmöjlighet |
| Datorflöde | desktopflow-avoid-excessive-wait-actions | Missbruk av vänteåtgärder har identifierats, och fler än tio vänteåtgärder orsakar potentiella flaskhalsar. | Lägst | Resultat |
| Datorflöde | desktopflow-avoid-immense-wait-duration | Mycket lång väntetid har identifierats, som överskrider gränsen på 600 sekunder för hårdkodade vänteåtgärder. | Lägst | Resultat |
Se även
Metodtips och vägledning för Dataverse
Metodtips och riktlinjer för modellstyrda program
Vanliga problem och lösningar för lösningskontrollen