Delen via


RID-specifieke, zelfstandige en AOT .NET-hulpprogramma's maken

Dit artikel is van toepassing op: ✔️ .NET SDK 10 en latere versies

Pakket .NET-hulpprogramma's voor specifieke platformen en architecturen, zodat u systeemeigen, snelle en bijgesneden toepassingen kunt distribueren. Deze mogelijkheid maakt het eenvoudiger om systeemeigen, snelle, bijgesneden .NET-toepassingen te distribueren voor opdrachtregelprogramma's zoals MCP-servers of andere platformspecifieke hulpprogramma's.

Overzicht

Vanaf .NET SDK 10 kunt u .NET-hulpprogramma's maken die zijn gericht op specifieke Runtime-id's (RID's). Deze hulpprogramma's kunnen het volgende zijn:

  • RID-specifiek: gecompileerd voor bepaalde besturingssystemen en architecturen.
  • Zelfstandig: neem de .NET-runtime op en vereist geen afzonderlijke .NET-installatie.
  • Systeemeigen AOT: gebruik vooraf compilatie voor sneller opstarten en kleinere geheugenvoetafdruk.

Wanneer gebruikers een RID-specifiek hulpprogramma installeren, selecteert en installeert de .NET CLI automatisch het juiste pakket voor hun platform.

Aanmelden voor RID-specifieke verpakking

Als u een RID-specifiek hulpprogramma wilt maken, configureert u uw project met een van de volgende MSBuild-eigenschappen:

Eigenschap RuntimeIdentifiers

Gebruik RuntimeIdentifiers dit om de platforms op te geven die door uw hulpprogramma worden ondersteund:

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>net10.0</TargetFramework>
    <PackAsTool>true</PackAsTool>
    <ToolCommandName>mytool</ToolCommandName>
    <RuntimeIdentifiers>win-x64;linux-x64;osx-arm64</RuntimeIdentifiers>
  </PropertyGroup>
</Project>

Eigenschap ToolPackageRuntimeIdentifiers

U kunt ook gebruiken ToolPackageRuntimeIdentifiers voor hulpprogrammaspecifieke RID-configuratie:

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>net10.0</TargetFramework>
    <PackAsTool>true</PackAsTool>
    <ToolCommandName>mytool</ToolCommandName>
    <ToolPackageRuntimeIdentifiers>win-x64;linux-x64;osx-arm64</ToolPackageRuntimeIdentifiers>
  </PropertyGroup>
</Project>

Gebruik een door puntkomma's gescheiden lijst met RID-waarden. Zie de RID-catalogus voor een lijst met runtime-id's.

Uw hulpprogramma verpakken

Het verpakkingsproces verschilt, afhankelijk van of u AOT-compilatie gebruikt. Als u een NuGet-pakket of .nupkg-bestand wilt maken vanuit het project, voert u de opdracht dotnet pack uit.

RID-specifieke en zelfstandige hulpprogramma's

Voer dotnet pack één keer uit voor hulpprogramma's zonder AOT-compilatie.

dotnet pack

Met deze opdracht worden meerdere NuGet-pakketten gemaakt:

  • Eén pakket voor elke RID: <packageName>.<RID>.<packageVersion>.nupkg
    • Voorbeeld: mytool.win-x64.1.0.0.nupkg
    • Voorbeeld: mytool.linux-x64.1.0.0.nupkg
    • Voorbeeld: mytool.osx-arm64.1.0.0.nupkg
  • Eén RID-agnostisch aanwijzerpakket: <packageName>.<packageVersion>.nupkg
    • Voorbeeld: mytool.1.0.0.nupkg

AOT-hulpprogramma's

Voor hulpprogramma's met AOT-compilatie (<PublishAot>true</PublishAot>) moet u afzonderlijk inpakken voor elk platform:

  • Pak het pakket op het hoogste niveau eenmaal in (op elk platform):

    dotnet pack
    
  • Voor elke specifieke RID op het bijbehorende platform inpakken:

    dotnet pack -r win-x64
    dotnet pack -r linux-x64
    dotnet pack -r osx-arm64
    

    U moet elke RID-specifieke packopdracht uitvoeren op het overeenkomende platform omdat AOT-compilatie systeemeigen binaire bestanden produceert. Zie Systeemeigen AOT-implementatie voor meer informatie over de vereisten voor systeemeigen AOT-compilatie.

Pakketstructuur

Pakkettypen

RID-specifieke hulpprogrammapakketten maken gebruik van twee pakkettypen:

  • DotnetTool: het pakket op het hoogste niveau dat metagegevens bevat.
  • DotnetToolRidPackage: De RID-specifieke pakketten die de binaire bestanden van het hulpprogramma bevatten.

Pakketmetagegevens

Het pakket op het hoogste niveau bevat metagegevens die aangeeft dat het een RID-specifiek hulpprogramma is en de RID-specifieke pakketten vermeldt. Wanneer u uitvoert dotnet tool install, leest de CLI deze metagegevens om te bepalen welk RID-specifiek pakket moet worden geïnstalleerd voor het huidige platform.

Uw hulpprogramma publiceren

Publiceer alle pakketten naar NuGet.org of uw pakketfeed met behulp van dotnet nuget push:

dotnet nuget push path/to/package/root/*.nupkg

Een RID-specifiek hulpprogramma uitvoeren

Gebruikers voeren RID-specifieke hulpprogramma's op dezelfde manier uit als platformagnostische hulpprogramma's:

dnx mytool

De CLI automatisch:

  1. Downloadt het pakket op het hoogste niveau.
  2. Leest de RID-specifieke metagegevens.
  3. Identificeert het meest geschikte pakket voor het huidige platform.
  4. Downloadt en voert het RID-specifieke pakket uit.

Voorbeeld: Een AOT-hulpprogramma maken

Hier volgt een volledig voorbeeld van het maken van een AOT-gecompileerd RID-specifiek hulpprogramma:

  1. Maak een nieuwe consoletoepassing:

    dotnet new console -n MyFastTool
    cd MyFastTool
    
  2. Werk het projectbestand bij om AOT- en RID-specifieke pakketten in te schakelen:

    <Project Sdk="Microsoft.NET.Sdk">
      <PropertyGroup>
        <OutputType>Exe</OutputType>
        <TargetFramework>net10.0</TargetFramework>
        <PackAsTool>true</PackAsTool>
        <ToolCommandName>myfasttool</ToolCommandName>
        <RuntimeIdentifiers>win-x64;linux-x64;osx-arm64</RuntimeIdentifiers>
        <PublishAot>true</PublishAot>
        <PackageId>MyFastTool</PackageId>
        <Version>1.0.0</Version>
        <Authors>Your Name</Authors>
        <Description>A fast AOT-compiled tool</Description>
      </PropertyGroup>
    </Project>
    
  3. Voeg uw toepassingscode toe in Program.cs:

    Console.WriteLine("Hello from MyFastTool!");
    Console.WriteLine($"Running on {Environment.OSVersion}");
    
  4. Pak het pakket op het hoogste niveau in:

    dotnet pack
    
  5. Pack voor elke specifieke RID (op het bijbehorende platform):

    In Windows:

    dotnet pack -r win-x64
    

    Op Linux:

    dotnet pack -r linux-x64
    

    In macOS:

    dotnet pack -r osx-arm64
    
  6. Publiceer alle pakketten op NuGet.org met behulp van de dotnet nuget push opdracht.

Zie ook