Bagikan melalui


Membuat alat .NET khusus RID, mandiri, dan AOT

Artikel ini berlaku untuk: ✔️ .NET SDK 10 dan versi yang lebih baru

Kemasi alat .NET untuk platform dan arsitektur tertentu sehingga Anda dapat mendistribusikan aplikasi asli, cepat, dan yang telah dioptimalkan. Kemampuan ini memudahkan untuk mendistribusikan aplikasi .NET asli, cepat, dan dipangkas untuk alat baris perintah seperti server MCP atau utilitas khusus platform lainnya.

Gambaran Umum

Dimulai dengan .NET SDK 10, Anda dapat membuat alat .NET yang menargetkan Pengidentifikasi Runtime (RID) tertentu. Alat-alat ini dapat berupa:

  • Khusus RID: Dikompilasi untuk sistem operasi dan arsitektur tertentu.
  • Mandiri: Sertakan runtime .NET dan tidak memerlukan penginstalan .NET terpisah.
  • AOT Asli: Gunakan kompilasi Ahead-of-Time untuk startup yang lebih cepat dan jejak memori yang lebih kecil.

Saat pengguna menginstal alat khusus RID, .NET CLI secara otomatis memilih dan menginstal paket yang sesuai untuk platform mereka.

Memilih untuk berpartisipasi dalam kemasan khusus RID

Untuk membuat alat khusus RID, konfigurasikan proyek Anda dengan salah satu properti MSBuild berikut:

Properti RuntimeIdentifiers

Gunakan RuntimeIdentifiers untuk menentukan platform yang didukung alat Anda:

<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>

Properti ToolPackageRuntimeIdentifiers

Atau, gunakan ToolPackageRuntimeIdentifiers untuk konfigurasi RID khusus alat:

<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>

Gunakan daftar nilai RID yang dibatasi titik koma. Untuk daftar Pengidentifikasi Runtime, lihat katalog RID.

Mengemas alat Anda

Proses pengemasan berbeda tergantung pada apakah Anda menggunakan kompilasi AOT. Untuk membangun paket NuGet, atau file .nupkg dari proyek, jalankan perintah paket dotnet .

Alat khusus RID dan mandiri

Untuk alat tanpa kompilasi AOT, jalankan dotnet pack sekali:

dotnet pack

Perintah ini membuat beberapa paket NuGet:

  • Satu paket untuk setiap RID: <packageName>.<RID>.<packageVersion>.nupkg
    • Contoh: mytool.win-x64.1.0.0.nupkg
    • Contoh: mytool.linux-x64.1.0.0.nupkg
    • Contoh: mytool.osx-arm64.1.0.0.nupkg
  • Paket pointer yang tidak bergantung pada RID: <packageName>.<packageVersion>.nupkg
    • Contoh: mytool.1.0.0.nupkg

Alat AOT

Untuk alat dengan kompilasi AOT (<PublishAot>true</PublishAot>), Anda harus mengemas secara terpisah untuk setiap platform:

  • Kemas paket tingkat atas sekali (pada platform apa pun):

    dotnet pack
    
  • Kemas untuk setiap RID tertentu pada platform yang sesuai:

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

    Anda harus menjalankan setiap perintah paket khusus RID pada platform yang cocok karena kompilasi AOT menghasilkan biner asli. Untuk informasi selengkapnya tentang prasyarat untuk kompilasi AOT Asli, lihat Penyebaran AOT Asli.

Struktur paket

Jenis paket

Paket alat khusus RID menggunakan dua jenis paket:

  • DotnetTool: Paket tingkat atas yang berisi metadata.
  • DotnetToolRidPackage: Paket khusus RID yang berisi biner alat aktual.

Metadata paket

Paket tingkat atas mencakup metadata yang menandakan itu adalah alat khusus RID dan mencantumkan paket khusus RID. Saat Anda menjalankan dotnet tool install, CLI membaca metadata ini untuk menentukan paket khusus RID mana yang akan diinstal untuk platform saat ini.

Menerbitkan alat Anda

Terbitkan semua paket ke NuGet.org atau umpan paket Anda dengan menggunakan dotnet nuget push:

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

Menjalankan alat khusus untuk RID

Pengguna menjalankan alat khusus RID dengan cara yang sama seperti alat yang tidak bergantung pada platform.

dnx mytool

CLI secara otomatis melakukan:

  1. Mengunduh paket tingkat atas.
  2. Membaca metadata khusus RID.
  3. Mengidentifikasi paket yang paling tepat untuk platform saat ini.
  4. Mengunduh dan menjalankan paket khusus RID.

Contoh: Membuat alat AOT

Berikut adalah contoh lengkap pembuatan alat khusus RID yang dikompilasi AOT:

  1. Buat aplikasi konsol baru:

    dotnet new console -n MyFastTool
    cd MyFastTool
    
  2. Perbarui file proyek untuk mengaktifkan kemasan khusus AOT dan 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>
    
  3. Tambahkan kode aplikasi Anda di Program.cs:

    Console.WriteLine("Hello from MyFastTool!");
    Console.WriteLine($"Running on {Environment.OSVersion}");
    
  4. Kemas paket tingkat atas:

    dotnet pack
    
  5. Kemas untuk setiap RID tertentu (pada platform yang sesuai):

    Pada Windows:

    dotnet pack -r win-x64
    

    Di Linux:

    dotnet pack -r linux-x64
    

    Di macOS:

    dotnet pack -r osx-arm64
    
  6. Terbitkan semua paket ke NuGet.org dengan menggunakan perintah dotnet nuget push .

Lihat juga