Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Este artigo aplica-se a: ✔️ .NET SDK 10 e versões posteriores
Empacota ferramentas .NET para plataformas e arquiteturas específicas, para poderes distribuir aplicações nativas, rápidas e recortadas. Esta capacidade facilita a distribuição de aplicações .NET nativas, rápidas e simplificadas para ferramentas de linha de comandos como servidores MCP ou outras utilidades específicas da plataforma.
Visão geral
A partir do .NET SDK 10, pode criar ferramentas .NET que visam Identificadores de Tempo de Execução (RIDs) específicos. Estas ferramentas podem ser:
- Específico para RID: Compilado para sistemas operativos e arquiteturas específicas.
- Autónomo: Inclua o runtime .NET e não exija uma instalação .NET separada.
- AOT nativo: Use compilação Ahead-of-Time para um arranque mais rápido e menor consumo de memória.
Quando os utilizadores instalam uma ferramenta específica para RID, a CLI .NET seleciona e instala automaticamente o pacote apropriado para a sua plataforma.
Optar por embalagens específicas para RID
Para criar uma ferramenta específica para RID, configure o seu projeto com uma das seguintes propriedades do MSBuild:
Propriedade RuntimeIdentifiers
Use RuntimeIdentifiers para especificar as plataformas que a sua ferramenta suporta:
<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>
Propriedade de Identificadores de Tempo de Execução do Pacote de Ferramentas
Alternativamente, use ToolPackageRuntimeIdentifiers para configuração de RID específico da ferramenta:
<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>
Use uma lista delimitada por ponto e vírgula dos valores de RID. Para uma lista de Identificadores de Tempo de Execução, consulte o catálogo RID.
Embale a sua ferramenta
O processo de empacotamento varia dependendo se está a utilizar a compilação AOT. Para construir um pacote NuGet, ou ficheiro .nupkg a partir do projeto, execute o comando dotnet pack .
Ferramentas específicas e autónomas para RID
Para ferramentas sem compilação AOT, execute dotnet pack uma vez:
dotnet pack
Este comando cria múltiplos pacotes NuGet:
- Um pacote para cada RID:
<packageName>.<RID>.<packageVersion>.nupkg- Exemplo:
mytool.win-x64.1.0.0.nupkg - Exemplo:
mytool.linux-x64.1.0.0.nupkg - Exemplo:
mytool.osx-arm64.1.0.0.nupkg
- Exemplo:
- Um pacote de ponteiro agnóstico ao RID:
<packageName>.<packageVersion>.nupkg- Exemplo:
mytool.1.0.0.nupkg
- Exemplo:
Ferramentas AOT
Para ferramentas com compilação AOT (<PublishAot>true</PublishAot>), deve embalar separadamente para cada plataforma:
Empacote o pacote de nível superior uma vez (em qualquer plataforma):
dotnet packEmbale para cada RID específico na plataforma correspondente:
dotnet pack -r win-x64 dotnet pack -r linux-x64 dotnet pack -r osx-arm64Tens de executar cada comando pack específico do RID na plataforma correspondente porque a compilação AOT produz binários nativos. Para mais informações sobre os pré-requisitos para a compilação Native AOT, veja Native AOT deployment.
Estrutura do pacote
Tipos de embalagem
Os pacotes de ferramentas específicos para RID usam dois tipos de pacotes:
- DotnetTool: O pacote de topo que contém metadados.
- DotnetToolRidPackage: Os pacotes específicos do RID que contêm os binários das ferramentas reais.
Metadados do pacote
O pacote topo inclui metadados que sinalizam que é uma ferramenta específica do RID e listam os pacotes específicos do RID. Quando executas dotnet tool install, a CLI lê estes metadados para determinar qual o pacote específico de RID a instalar para a plataforma atual.
Publique a sua ferramenta
Publique todos os pacotes no NuGet.org ou no seu feed de pacotes usando dotnet nuget push:
dotnet nuget push path/to/package/root/*.nupkg
Execute uma ferramenta específica para RID
Os utilizadores executam ferramentas específicas do RID da mesma forma que ferramentas independentes da plataforma:
dnx mytool
O CLI faz automaticamente:
- Descarrega o pacote de nível superior.
- Lê os metadados específicos do RID.
- Identifica o pacote mais adequado para a plataforma atual.
- Descarrega e executa o pacote específico para RID.
Exemplo: Criar uma ferramenta AOT
Aqui está um exemplo completo de como criar uma ferramenta RID específica compilada por AOT:
Crie um novo aplicativo de console:
dotnet new console -n MyFastTool cd MyFastToolAtualize o ficheiro do projeto para permitir o empacotamento específico para AOT e 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>Adicione o seu código de candidatura em
Program.cs:Console.WriteLine("Hello from MyFastTool!"); Console.WriteLine($"Running on {Environment.OSVersion}");Embale o pacote topo de gama:
dotnet packEmpacotar para cada RID específico (na plataforma correspondente):
No Windows:
dotnet pack -r win-x64No Linux:
dotnet pack -r linux-x64Em macOS:
dotnet pack -r osx-arm64Publique todos os pacotes para NuGet.org usando o comando dotnet nuget push .