Zelfstandige implementaties en uitvoerbare bestanden knippen

Het frameworkafhankelijke implementatiemodel is het meest succesvolle implementatiemodel sinds het begin van .NET. In dit scenario bundelt de ontwikkelaar van de toepassing alleen de assembly's van toepassingen en assembly's van derden met de verwachting dat de .NET-runtime- en runtimebibliotheken beschikbaar zijn op de clientcomputer. Dit implementatiemodel blijft de dominante versie in de nieuwste .NET-release, maar er zijn enkele scenario's waarin het frameworkafhankelijke model niet de beste keuze is. Het alternatief is het publiceren van een zelfstandige toepassing, waarbij de .NET-runtime- en runtimebibliotheken worden gebundeld samen met de toepassing en assembly's van derden.

Het trim-self-contained implementatiemodel is een gespecialiseerde versie van het zelf-ingesloten implementatiemodel dat is geoptimaliseerd om de implementatiegrootte te verminderen. Het minimaliseren van de implementatiegrootte is een essentiƫle vereiste voor sommige scenario's aan de clientzijde, zoals Blazor-toepassingen. Afhankelijk van de complexiteit van de toepassing, wordt alleen naar een subset van de frameworkassembly's verwezen en is een subset van de code binnen elke assembly vereist om de toepassing uit te voeren. De ongebruikte onderdelen van de bibliotheken zijn overbodig en kunnen worden afgekapt vanuit de verpakte toepassing.

Er bestaat echter een risico dat de build-time-analyse van de toepassing tijdens runtime fouten kan veroorzaken, omdat ze niet betrouwbaar verschillende problematische codepatronen kunnen analyseren (grotendeels gericht op reflectiegebruik). Om deze problemen te verhelpen, worden waarschuwingen geproduceerd wanneer de trimmer een codepatroon niet volledig kan analyseren. Zie Inleiding tot knipwaarschuwingen voor informatie over wat de trimwaarschuwingen betekenen en hoe u deze kunt oplossen.

Notitie

  • Bijsnijden wordt volledig ondersteund in .NET 6 en latere versies. In .NET Core 3.1 en .NET 5 was het bijsnijden een experimentele functie.
  • Bijsnijden is alleen beschikbaar voor toepassingen die zelfstandig zijn gepubliceerd.

Onderdelen die problemen met bijsnijden veroorzaken

Waarschuwing

Niet alle projecttypen kunnen worden ingekort. Zie Bekende incompatibiliteit bijsnijden voor meer informatie.

Code die problemen met buildtijdanalyse veroorzaakt, is niet geschikt voor bijsnijden. Enkele veelvoorkomende coderingspatronen die problematisch zijn wanneer een toepassing wordt gebruikt, zijn afkomstig van niet-gebonden weerspiegelingsgebruik en externe afhankelijkheden die niet zichtbaar zijn tijdens de build. Een voorbeeld van niet-afhankelijke weerspiegeling is een verouderde serialisatiefunctie, zoals XML-serialisatie, en een voorbeeld van onzichtbare externe afhankelijkheden is ingebouwde COM. Zie Inleiding tot het bijsnijden van waarschuwingen en om ervoor te zorgen dat uw bibliotheek compatibel is met bijsnijden, de .NET-bibliotheken voorbereiden voor bijsnijden voor informatie over het bijsnijden.

Bijsnijden inschakelen

  1. Voeg dit toe <PublishTrimmed>true</PublishTrimmed> aan het projectbestand.

    Met deze eigenschap wordt een bijgesneden app geproduceerd voor zelf-ingesloten publicatie. Ook worden trim-incompatibele functies uitgeschakeld en worden tijdens de build compatibiliteitswaarschuwingen weergegeven.

    <PropertyGroup>
        <PublishTrimmed>true</PublishTrimmed>
    </PropertyGroup>
    
  2. Publiceer vervolgens uw app met behulp van de opdracht dotnet publish of Visual Studio.

Publiceren met de CLI

In het volgende voorbeeld wordt de app voor Windows gepubliceerd als een ingesloten zelfstandige toepassing.

dotnet publish -r win-x64

Bijsnijden wordt alleen ondersteund voor zelfstandige apps.

<PublishTrimmed> moet worden ingesteld in het projectbestand, zodat trim-incompatibele functies worden uitgeschakeld tijdens dotnet build. U kunt deze optie echter ook instellen als argument op dotnet publish:

dotnet publish -r win-x64 -p:PublishTrimmed=true

Zie .NET-apps publiceren met .NET CLI voor meer informatie.

Publiceren met Visual Studio

  1. Klik in Solution Explorer met de rechtermuisknop op het project dat u wilt publiceren en selecteer Publiceren.

    Solution Explorer with a right-click menu highlighting the Publish option.

    Als u nog geen publicatieprofiel hebt, volgt u de instructies om er een te maken en kiest u het doeltype Map .

  2. Kies Meer acties>bewerken.

    Visual studio publish profile with edit button.

  3. Stel in het dialoogvenster Profielinstellingen de volgende opties in:

    • Stel de implementatiemodus in op Zelfstandig.
    • Stel Target Runtime in op het platform waarop u wilt publiceren.
    • Selecteer Ongebruikte code knippen.

    Kies Opslaan om de instellingen op te slaan en terug te keren naar het dialoogvenster Publiceren .

    Profile settings dialog with deployment mode, target runtime, and trim unused assemblies options highlighted.

  4. Kies Publiceren om uw app te publiceren, ingekort.

Zie .NET Core-apps publiceren met Visual Studio voor meer informatie.

Publiceren met Visual Studio voor Mac

Visual Studio voor Mac biedt geen opties voor het publiceren van uw app. U moet handmatig publiceren door de instructies in de sectie Publiceren met de CLI te volgen. Zie .NET-apps publiceren met .NET CLI voor meer informatie.

Zie ook