Opret patches for at forenkle løsningsopdateringer

Hvis du føjer en tabel til en løsning og eksporterer løsningen, eksporterer du tabellen og alle relaterede aktiver i den pågældende løsning. Disse aktiver omfatter kolonner (attributter), formularer, visninger, relationer og visualiseringer sammen med andre aktiver, der er pakket sammen med tabellen. Eksport af alle objekter betyder, at du utilsigtet kan ændre objekter i destinationsinstallationen eller overføre utilsigtede afhængigheder.

Hvis du vil håndtere afhængigheder, skal du oprette og publicere løsningsrettelser, der indeholder underkomponenter i tabeller, i stedet for at publicere hele tabellen og alle dens ressourcer. Du kan samle (flette) den oprindelige løsning og en eller flere relaterede programrettelser på et senere tidspunkt til en opdateret version af løsningen, som derefter kan erstatte den oprindelige løsning i mål-Microsoft Dataverse-organisationen.

Programrettelser

Du kan anvende patches til administrerede eller ikke-administrerede løsninger og kun medtage ændringer af tabeller og relaterede tabelaktiver. Programrettelser indeholder ingen ikke-brugerdefinerede systemkomponenter eller -relationer, som de er afhængige af, fordi disse komponenter allerede findes i den organisation, der udrulles til. På et tidspunkt i din udviklingscyklus kan du samle alle programrettelserne i en ny løsningsversion, som erstatter den oprindelige løsning, som programrettelserne blev oprettet fra.

I Dataverse-databasen gemmes programrettelser som Solution tabelposter. En ikke-null ParentSolutionId-attribut angiver, at løsningen er en programrettelse. Du kan oprette og administrere patcher via SDK'et for .NET eller web-API'er, som er nyttige til udvikling af automatisering, f.eks. et script til produktinstallation. Dataverse-webprogrammet indeholder imidlertid forskellige webformularer, som gør det muligt at oprette og administrere patches interaktivt.

  • Du kan kun oprette programrettelser fra en overordnet løsning ved hjælp af CloneAsPatchRequest eller handlingen CloneAsPatch.
  • Den overordnede patch kan ikke være en patch.
  • Programrettelser kan kun have én overordnet løsning.
  • En patch opretter en afhængighed på løsningsniveau af den overordnede løsning.
  • Du kan kun installere en programrettelse, hvis den overordnede løsning er til stede.
  • Du kan ikke installere en programrettelse, medmindre den overordnede løsnings entydige navn og hoved- eller underversionsnummer, som identificeret af ParentSolutionId, ikke stemmer overens med dem for den overordnede løsning, der er installeret i målorganisationen.
  • En patchversion skal have det samme major- og minornummer, men et højere build- og versionsnummer end den overordnede løsnings versionsnummer. Det viste navn kan være forskelligt.
  • Hvis en løsning indeholder programrettelser, skal efterfølgende programrettelser have et numerisk højere versionsnummer end nogen eksisterende programrettelse til denne løsning.
  • Patches understøtter de samme operationer som løsninger, f.eks. en additiv opdatering, men ikke fjernelse. Du kan ikke fjerne komponenter fra en løsning ved hjælp af en patch. Hvis du vil fjerne komponenter fra en løsning, skal du udføre en opgradering.
  • Du skal importere patches, der er eksporteret som administrerede, oven på en administreret overordnet løsning. Reglen er, at programrettelsesbeskyttelsen (administreret eller ikke-administreret) skal svare til dets overordnede element.
  • Brug ikke ikke-administrerede patches til produktionsformål.

Værktøjerne SolutionPackager og PackageDeployer understøtter løsningspatches. Se værktøjets onlinehjælp for eventuelle kommandolinjeparametre, der er relateret til patches.

Opret en patch

Opret en patch fra en ikke-administreret løsning i et miljø ved hjælp af meddelelsen CloneAsPatchRequest eller CloneAsPatch Action, eller ved hjælp af webprogrammet. Når du opretter patchen, låser du den oprindelige løsning og kan ikke ændre eller eksportere den, så længe der findes afhængige patches i miljøet, som identificerer løsningen som den overordnede løsning. Patchversionsstyring svarer til løsningsversionsstyring og angives i følgende format: major.minor.build.release. Du kan ikke ændre de eksisterende hoved- eller underversioner af løsningen, når du opretter en programrettelse.

Eksporter og importer en patch

Brug SDK til .NET eller Web API'er, webprogrammet eller Package Deployer-værktøjet til at eksportere og importere en patch. De relevante SDK'er for .NET-anmodningsklasser er ImportSolutionRequest og ExportSolutionRequest. De relevante handlinger for web-API'en er ImportSolution Action og ExportSolution Action.

Eksempler på patching

Følgende tabel indeholder detaljer om et eksempel på programrettelse. I dette eksempel importerer du løsningen og programrettelserne i numerisk rækkefølge, og importerne er kumulative, hvilket er i overensstemmelse med import af løsninger generelt.

Patchnavn Beskrivelse
SolutionA, version 1.0 (uadministreret) Indeholder entityA med seks felter.
SolutionA, version 1.0.1.0 (uhåndteret) Indeholder entityA med seks felter (tre opdateret), og tilføjer entityB med 10 felter.
SolutionA, version 1.0.2.0 (uadministreret) Indeholder entityC med 10 felter.

Importprocessen er som følger.

  1. Udvikleren eller tilpasseren importerer først basisløsningen (SolutionA 1.0) til miljøet. Resultatet er entityA med seks felter i miljøet.
  2. Importér derefter programrettelsen SolutionA 1.0.1.0. Miljøet indeholder nu entityA med seks felter (tre opdateret) plus entityB med 10 felter.
  3. Til sidst skal du importere programrettelsen SolutionA 1.0.2.0. Miljøet indeholder nu entityA med seks felter (tre er blevet opdateret), entityB med 10 felter plus entityC med 10 felter.

Endnu et eksempel på patching

Lad os se på et andet eksempel på programrettelser. I følgende tabel vises detaljerne.

Patchnavn Beskrivelse
SolutionA, version 1.0 (ikke-administreret, basisløsning) Indeholder Account-tabellen, hvor længden af kontonummerkolonnen justeres fra 20 til 30 tegn.
SolutionB, version 2.0 (uadministreret, anden leverandør) Indeholder Account-tabel, hvor længden af kontonummerkolonnen justeres til 50 tegn.
SolutionA, version 1.0.1.0 (ikke-administreret, patch) Indeholder en opdatering til Account-tabellen, hvor længden af kontonummerkolonnen justeres til 35 tegn.

Importprocessen er som følger:

  1. Udvikleren eller tilpasseren importerer først basisløsningen (SolutionA 1.0) til miljøet. Resultatet er en Account-tabel med en kolonne med kontonummer på 30 tegn.
  2. Importér SolutionB. Miljøet indeholder nu en Account-tabel med en kontonummerkolonne på 50 tegn.
  3. Importér SolutionA patch 1.0.1.0. Miljøet indeholder stadig en Account-tabel med en kontonummerkolonne på 50 tegn som implementeret af SolutionB.
  4. Fjern SolutionB. Miljøet indeholder nu en Account-tabel med en kontonummerkolonne på 35 tegn som implementeret af programrettelsen SolutionA 1.0.1.0.

Slet en patch

Du kan slette en programrettelse eller (overordnet) basisløsning ved hjælp af DeleteRequest eller, for Web-API'en, bruge metoden HTTP DELETE. Sletningsprocessen er forskellig for en administreret eller ikke-administreret løsning, der har en eller flere programrettelser i miljøet.

For en uadministreret løsning skal du først fjerne alle programrettelser for basisløsningen i omvendt versionsrækkefølge i forhold til den, de blev oprettet i, før du afinstallerer basisløsningen.

For en administreret løsning kan du ganske enkelt fjerne basisløsningen. Dataverse-systemet afinstallerer automatisk programrettelserne i omvendt versionsrækkefølge, før systemet afinstallerer basisløsningen. Du kan også blot afinstallere en enkelt programrettelse.

Opdater en løsning

Opdatering af en løsning omfatter fletning af alle rettelser til den pågældende løsning i en ny version af løsningen. Bagefter oplåses den pågældende løsning og kan igen ændres (kun ikke-administrerede løsninger) eller eksporteres. For administrerede løsninger er yderligere ændringer af løsningen ikke tilladt undtagen oprettelse af programrettelser fra den nyligt opdaterede løsning. Hvis du vil samle rettelser i en ikke-administreret løsning, skal du bruge CloneAsSolutionRequest eller handlingen CloneAsSolution. Kloning af en løsning opretter en ny version af den ikke-administrerede løsning, som indeholder alle løsningens patches, med et højere major.minor-versionsnummer, samme entydige navn og et visningsnavn.

For en administreret løsning håndteres tingene lidt anderledes. Du skal først klone den ikke-administreret løsning (A), inkorporere alle dens patches og derefter eksportere den som en administreret løsning (B). I målorganisationen, der indeholder den administrerede version af løsning (A) og dens programrettelser, importerer du den administrerede løsning (B) og udfører derefter DeleteAndPromoteRequest eller handlingen DeleteAndPromote for at erstatte den administrerede løsning (A) og dens programrettelser med den opgraderede administrerede løsning (B), der har et højere versionsnummer.

Se også

Brug segmenterede løsninger