Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
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
- Voorbeeld:
- Eén RID-agnostisch aanwijzerpakket:
<packageName>.<packageVersion>.nupkg- Voorbeeld:
mytool.1.0.0.nupkg
- Voorbeeld:
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 packVoor elke specifieke RID op het bijbehorende platform inpakken:
dotnet pack -r win-x64 dotnet pack -r linux-x64 dotnet pack -r osx-arm64U 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:
- Downloadt het pakket op het hoogste niveau.
- Leest de RID-specifieke metagegevens.
- Identificeert het meest geschikte pakket voor het huidige platform.
- 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:
Maak een nieuwe consoletoepassing:
dotnet new console -n MyFastTool cd MyFastToolWerk 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>Voeg uw toepassingscode toe in
Program.cs:Console.WriteLine("Hello from MyFastTool!"); Console.WriteLine($"Running on {Environment.OSVersion}");Pak het pakket op het hoogste niveau in:
dotnet packPack voor elke specifieke RID (op het bijbehorende platform):
In Windows:
dotnet pack -r win-x64Op Linux:
dotnet pack -r linux-x64In macOS:
dotnet pack -r osx-arm64Publiceer alle pakketten op NuGet.org met behulp van de dotnet nuget push opdracht.