Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Cet article s’applique à : ✔️ .NET SDK 10 et versions ultérieures
Packager des outils .NET pour des plateformes et des architectures spécifiques afin de distribuer des applications natives, rapides et réduites. Cette fonctionnalité facilite la distribution d’applications .NET natives, rapides et réduites pour les outils en ligne de commande tels que les serveurs MCP ou d’autres utilitaires spécifiques à la plateforme.
Aperçu
À compter du Kit de développement logiciel (SDK) .NET 10, vous pouvez créer des outils .NET qui ciblent des identificateurs d’exécution spécifiques (RID). Ces outils peuvent être les suivants :
- Spécifique au RID : compilé pour des systèmes d’exploitation et des architectures particuliers.
- Autonome : inclut le runtime .NET et ne nécessite pas d’installation distincte de .NET.
- AOT natif : Utilisez la compilation anticipée pour accélérer le démarrage et réduire l’encombrement mémoire.
Lorsque les utilisateurs installent un outil spécifique au RID, l’interface CLI .NET sélectionne et installe automatiquement le package approprié pour leur plateforme.
Opter pour un emballage spécifique au RID
Pour créer un outil spécifique au RID, configurez votre projet avec l’une des propriétés MSBuild suivantes :
RuntimeIdentifiers, propriété
Permet RuntimeIdentifiers de spécifier les plateformes prises en charge par votre outil :
<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>
propriété ToolPackageRuntimeIdentifiers
Vous pouvez également utiliser cette option ToolPackageRuntimeIdentifiers pour la configuration RID spécifique à l’outil :
<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>
Utilisez une liste délimitée par des points-virgules de valeurs RID. Pour obtenir la liste des identificateurs d’exécution, consultez le catalogue RID.
Empaqueter votre outil
Le processus d’empaquetage diffère selon que vous utilisez la compilation AOT. Pour générer un package NuGet ou un fichier .nupkg à partir du projet, exécutez la commande dotnet pack .
Outils propres à RID et autonomes
Pour les outils sans compilation AOT, exécutez dotnet pack une fois :
dotnet pack
Cette commande crée plusieurs packages NuGet :
- Un package pour chaque RID :
<packageName>.<RID>.<packageVersion>.nupkg- Exemple :
mytool.win-x64.1.0.0.nupkg - Exemple :
mytool.linux-x64.1.0.0.nupkg - Exemple :
mytool.osx-arm64.1.0.0.nupkg
- Exemple :
- Un paquet de pointeur indépendant de RID :
<packageName>.<packageVersion>.nupkg- Exemple :
mytool.1.0.0.nupkg
- Exemple :
Outils AOT
Pour les outils avec la compilation AOT (<PublishAot>true</PublishAot>), vous devez effectuer un pack séparément pour chaque plateforme :
Empaquetez le package de niveau supérieur une seule fois (sur n’importe quelle plateforme) :
dotnet packPack pour chaque RID spécifique sur la plateforme correspondante :
dotnet pack -r win-x64 dotnet pack -r linux-x64 dotnet pack -r osx-arm64Vous devez exécuter chaque commande de pack spécifique à RID sur la plateforme correspondante, car la compilation AOT produit des fichiers binaires natifs. Pour plus d’informations sur les prérequis pour la compilation AOT native, consultez déploiement AOT natif.
Structure de package
Types de packages
Les packages d’outils spécifiques au RID utilisent deux types de packages :
- DotnetTool : package de niveau supérieur qui contient des métadonnées.
- DotnetToolRidPackage : packages spécifiques au RID qui contiennent les fichiers binaires d’outils réels.
Métadonnées de paquet
Le package de niveau supérieur inclut des métadonnées qui signalent qu’il s’agit d’un outil spécifique au RID et répertorie les packages spécifiques au RID. Lorsque vous exécutez dotnet tool install, l’interface CLI lit ces métadonnées pour déterminer le package spécifique au RID à installer pour la plateforme actuelle.
Publier votre outil
Publiez tous les packages sur NuGet.org ou votre flux de package à l’aide de dotnet nuget push :
dotnet nuget push path/to/package/root/*.nupkg
Exécuter un outil spécifique au RID
Les utilisateurs exécutent des outils spécifiques au RID de la même façon que les outils indépendants de la plateforme :
dnx mytool
L'interface CLI automatise :
- Télécharge le package de niveau supérieur.
- Lit les métadonnées spécifiques au RID.
- Identifie le package le plus approprié pour la plateforme actuelle.
- Télécharge et exécute le package spécifique au RID.
Exemple : Créer un outil AOT
Voici un exemple complet de création d’un outil spécifique au RID compilé par AOT :
Créez une application console :
dotnet new console -n MyFastTool cd MyFastToolMettez à jour le fichier projet pour activer l’empaquetage spécifique à AOT et RID :
<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>Ajoutez votre code d’application dans
Program.cs:Console.WriteLine("Hello from MyFastTool!"); Console.WriteLine($"Running on {Environment.OSVersion}");Packez le package de niveau supérieur :
dotnet packPack pour chaque RID spécifique (sur la plateforme correspondante) :
Sur Windows :
dotnet pack -r win-x64Sur Linux :
dotnet pack -r linux-x64Sur macOS :
dotnet pack -r osx-arm64Publiez tous les packages sur NuGet.org à l’aide de la commande dotnet nuget Push .