Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bu makale şunlar için geçerlidir: ✔️ .NET SDK 10 ve üzeri sürümler
Yerel, hızlı ve kırpılmış uygulamaları dağıtabilmeniz için belirli platformlar ve mimariler için .NET araçlarını paketleyin. Bu özellik, MCP sunucuları veya platforma özgü diğer yardımcı programlar gibi komut satırı araçları için yerel, hızlı, kırpılmış .NET uygulamalarını dağıtmayı kolaylaştırır.
Genel Bakış
.NET SDK 10'dan başlayarak, belirli Çalışma Zamanı Tanımlayıcılarını (RID) hedefleyen .NET araçları oluşturabilirsiniz. Bu araçlar şunlar olabilir:
- RID'ye özgü: Belirli işletim sistemleri ve mimariler için derlenmiştir.
- Bağımsız: .NET çalışma zamanını dahil edin ve ayrı bir .NET yüklemesi gerektirmez.
- Yerel AOT: Daha hızlı başlangıç ve daha küçük bellek ayak izi için Önceden Derleme özelliğini kullanın.
Kullanıcılar RID'ye özgü bir araç yüklediğinde. .NET CLI, platformları için uygun paketi otomatik olarak seçer ve yükler.
RID'ye özgü paketlemeyi kabul etme
RID'ye özgü bir araç oluşturmak için projenizi aşağıdaki MSBuild özelliklerinden biriyle yapılandırın:
RuntimeIdentifiers özelliği
Aracının desteklediği platformları belirtmek için kullanın RuntimeIdentifiers :
<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>
ToolPackageRuntimeIdentifiers özelliği
Alternatif seçenek olarak, araçlar için özel RID yapılandırması için ToolPackageRuntimeIdentifiers kullanın.
<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>
RID değerlerinin noktalı virgülle ayrılmış listesini kullanın. Çalışma Zamanı Tanımlayıcılarının listesi için bkz. RID kataloğu.
Aracınızı paketleme
Paketleme işlemi, AOT derlemesi kullanıp kullanmadığınıza bağlı olarak farklılık gösterir. Projeden bir NuGet paketi veya .nupkg dosyası oluşturmak için dotnet pack komutunu çalıştırın.
RID'ye özgü ve bağımsız araçlar
AOT derlemesi olmayan araçlar için bir kez çalıştırın dotnet pack :
dotnet pack
Bu komut birden çok NuGet paketi oluşturur:
- Her RID için bir paket:
<packageName>.<RID>.<packageVersion>.nupkg- Örnek:
mytool.win-x64.1.0.0.nupkg - Örnek:
mytool.linux-x64.1.0.0.nupkg - Örnek:
mytool.osx-arm64.1.0.0.nupkg
- Örnek:
- Bağımsız yapıda pointer paketi:
<packageName>.<packageVersion>.nupkg- Örnek:
mytool.1.0.0.nupkg
- Örnek:
AOT araçları
AOT derlemesi ()<PublishAot>true</PublishAot> içeren araçlar için her platform için ayrı ayrı paketlemeniz gerekir:
Üst düzey paketi bir kez (herhangi bir platformda) paketle:
dotnet packİlgili platformdaki her bir RID için paket:
dotnet pack -r win-x64 dotnet pack -r linux-x64 dotnet pack -r osx-arm64AOT derlemesi yerel ikili dosyalar ürettiğinden, rid'ye özgü her paket komutunu eşleşen platformda çalıştırmanız gerekir. Yerel AOT derlemesinin önkoşulları hakkında daha fazla bilgi için bkz. Yerel AOT dağıtımı.
Paket yapısı
Paket türleri
RID'ye özgü araç paketleri iki paket türü kullanır:
- DotnetTool: Meta verileri içeren en üst düzey paket.
- DotnetToolRidPackage: Gerçek araç ikili dosyalarını içeren RID'ye özgü paketler.
Paket meta verileri
Üst düzey paket, BUNUN RID'ye özgü bir araç olduğunu belirten meta veriler içerir ve RID'ye özgü paketleri listeler. çalıştırdığınızda dotnet tool installCLI, geçerli platform için hangi RID'ye özgü paketin yükleneceğini belirlemek üzere bu meta verileri okur.
Aracınızı yayımlama
dotnet nuget push komutunu kullanarak tüm paketleri NuGet.org veya paket akışınızda yayımlayın:
dotnet nuget push path/to/package/root/*.nupkg
RID'ye özgü bir aracı çalıştır
Kullanıcılar RID'ye özgü araçları platformdan bağımsız araçlarla aynı şekilde çalıştırır:
dnx mytool
CLI otomatik olarak:
- Üst düzey paketi indirir.
- RID'ye özgü meta verileri okur.
- Geçerli platform için en uygun paketi tanımlar.
- RID'ye özgü paketi indirir ve çalıştırır.
Örnek: AOT aracı nasıl oluşturulur
AOT ile derlenmiş RID'ye özgü bir araç oluşturmanın tam bir örneği aşağıda verilmiştir:
Yeni bir konsol uygulaması oluşturun:
dotnet new console -n MyFastTool cd MyFastToolAOT ve RID'ye özgü paketlemeyi etkinleştirmek için proje dosyasını güncelleştirin:
<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>uygulama kodunuzu içine
Program.csekleyin:Console.WriteLine("Hello from MyFastTool!"); Console.WriteLine($"Running on {Environment.OSVersion}");Üst düzey paketi paketle:
dotnet packBelirli her RID için paket (ilgili platformda):
Windows'da:
dotnet pack -r win-x64Linux'ta:
dotnet pack -r linux-x64macOS'ta:
dotnet pack -r osx-arm64dotnet nuget push komutunu kullanarak tüm paketleri NuGet.org yayımlama.