Eğitim
Öğrenme yolu
.NET Aspire ile dağıtılmış uygulamalar oluşturma - Training
.NET Aspire ile gözlemlenebilir, üretime hazır, dağıtılmış uygulamalar oluşturmayı öğrenin.
Bu tarayıcı artık desteklenmiyor.
En son özelliklerden, güvenlik güncelleştirmelerinden ve teknik destekten faydalanmak için Microsoft Edge’e yükseltin.
RID, çalışma zamanı tanımlayıcısı için kısadır. RID değerleri, uygulamanın çalıştığı hedef platformları tanımlamak için kullanılır.
.NET paketleri tarafından NuGet paketlerindeki platforma özgü varlıkları temsil etmek için kullanılır. Aşağıdaki değerler RID örnekleridir: linux-x64
, win-x64
veya osx-x64
.
Yerel bağımlılıkları olan paketler için RID, paketin hangi platformlarda geri yüklenebileceğini belirtir.
Proje dosyanızın öğesinde <RuntimeIdentifier>
tek bir RID ayarlanabilir. Birden çok RID, proje dosyasının <RuntimeIdentifiers>
öğesinde noktalı virgülle ayrılmış liste olarak tanımlanabilir. Ayrıca aşağıdaki .NET CLI komutlarıyla birlikte seçeneği aracılığıyla --runtime
da kullanılır:
Beton işletim sistemlerini temsil eden RID'ler genellikle şu deseni izler: [os].[version]-[architecture]-[additional qualifiers]
burada:
[os]
işletim/platform sistemi adıdır. Örneğin, ubuntu
.
[version]
, noktayla ayrılmış (.
) sürüm numarası biçimindeki işletim sistemi sürümüdür. Örneğin, 15.10
.
Pazarlama sürümleri genellikle farklı platform API'leri yüzey alanına sahip işletim sisteminin birden çok ayrı sürümünü temsil etmediğinden, sürüm pazarlama sürümü olmamalıdır.
[architecture]
işlemci mimarisidir. Örneğin: x86
, x64
, arm
veya arm64
.
[additional qualifiers]
farklı platformları daha da ayırt edin. Örneğin: aot
.
RID grafiği veya çalışma zamanı geri dönüş grafiği, birbiriyle uyumlu RID'lerin listesidir.
Bu RID'ler depodaki PortableRuntimeIdentifierGraph.json dotnet/runtime
tanımlanır. Bu dosyada, temel olan dışındaki tüm RID'lerin bir "#import"
deyimi içerdiğini görebilirsiniz. Bu deyimler uyumlu RID'leri gösterir.
.NET 8'in öncesinde, sürüme özgü ve dağıtıma özgü RID'ler, depoda dotnet/runtime
bulunan runtime.json dosyasına düzenli olarak eklenirdi. Bu grafik artık güncelleştirilmez ve geriye dönük uyumluluk seçeneği olarak bulunur. Geliştiriciler, sürüme özgü olmayan ve dağıtıma özgü olmayan RID'ler kullanmalıdır.
NuGet paketleri geri yüklediğinde, belirtilen çalışma zamanı için tam bir eşleşme bulmaya çalışır. Tam eşleşme bulunamazsa NuGet, RID grafiğine göre en yakın uyumlu sistemi bulana kadar grafiği geri adım adım gösterir.
Aşağıdaki örnek RID için osx-x64
gerçek girdidir:
"osx-x64": {
"#import": [ "osx", "unix-x64" ]
}
Yukarıdaki RID, öğesini içeri aktardığını osx-x64
unix-x64
belirtir. Bu nedenle NuGet paketleri geri yüklediğinde pakette için osx-x64
tam bir eşleşme bulmaya çalışır. NuGet belirli bir çalışma zamanını bulamazsa, örneğin çalışma zamanlarını belirten unix-x64
paketleri geri yükleyebilir.
Aşağıdaki örnekte, runtime.json dosyasında da tanımlanan biraz daha büyük bir RID grafiği gösterilmektedir:
linux-arm64 linux-arm32
| \ / |
| linux |
| | |
unix-arm64 | unix-x64
\ | /
unix
|
any
Alternatif olarak RID grafiğini (veya grafiğin herhangi bir alt kümesini) kolayca görselleştirmek için RidGraph aracını kullanabilirsiniz.
Tüm RID'ler sonunda kök any
RID'ye geri eşler.
RID'lerle ilgili dikkate alınması gereken bazı noktalar vardır:
Bileşen parçalarını almak için RID'leri ayrıştırmaya çalışmayın.
Platform için önceden tanımlanmış RID'leri kullanın.
RID'lerin belirli olması gerekir, bu nedenle gerçek RID değerinden hiçbir şey varsaymayın.
Kesinlikle gerekli olmadıkça program aracılığıyla RID oluşturmayın.
Bazı uygulamaların RID'leri program aracılığıyla hesaplaması gerekir. Öyleyse, hesaplanan RID'lerin büyük/küçük harf de dahil olmak üzere katalogla tam olarak eşleşmesi gerekir. Farklı büyük/küçük harfe sahip RID'ler, işletim sistemi büyük/küçük harfe duyarlı olduğunda (örneğin Linux) sorunlara neden olur çünkü değer genellikle çıkış yolları gibi şeyler oluşturulurken kullanılır. Örneğin, Visual Studio'da çözüm yapılandırma yöneticisi ve proje özelliklerindeki bilgilere dayalı özel bir yayımlama sihirbazı düşünün. Çözüm yapılandırması yerine geçersiz bir değer ARM64
arm64
geçirirse, gibi win-ARM64
geçersiz bir RID ile sonuçlanabilir.
RID'leri kullanabilmek için hangi RID'lerin mevcut olduğunu bilmeniz gerekir. En son ve tam sürüm için depodaki dotnet/runtime
PortableRuntimeIdentifierGraph.json bakın.
Belirli bir sürüme veya işletim sistemi dağıtımına bağlı olmayan ve 'taşınabilir' olarak kabul edilen RID'ler önerilen seçenektir. Bu, taşınabilir RID'lerin hem platforma özgü bir uygulama oluşturmak hem de RID'ye özgü varlıklarla NuGet paketi oluşturmak için kullanılması gerektiği anlamına gelir.
.NET 8'den başlayarak, .NET SDK'sının ve çalışma zamanının varsayılan davranışı yalnızca sürüme özgü olmayan ve dağıtıma özgü olmayan RID'leri dikkate almaktır. SDK , geri yükleme ve derleme sırasında daha küçük bir taşınabilir RID grafiği kullanır. , RuntimeInformation.RuntimeIdentifier çalışma zamanının oluşturulduğu platformu döndürür. Çalışma zamanında .NET bilinen bir taşınabilir RID kümesi kullanarak RID'ye özgü varlıkları bulur. Çalışma zamanında yoksayılabilir RID'ye özgü varlıklara sahip bir uygulama oluştururken SDK bir uyarı gönderir: NETSDK1206.
.NET artık işletim sistemi sürümüne veya dağıtımına özgü bağımlılıkları çözümlemek için birinci sınıf destek sağlamayı denemez. Uygulamanızın veya paketinizin işletim sistemi sürümüne veya dağıtımına göre farklı varlıklar yüklemesi gerekiyorsa, varlıkları koşullu olarak yüklemek için mantığı uygulaması gerekir.
Platform hakkında bilgi almak için API'leri kullanın System.OperatingSystem . Windows ve macOS'ta işletim Environment.OSVersion sistemi sürümünü döndürür. Linux'ta çekirdek sürümü olabilir; Linux dağıtım adını ve sürüm bilgilerini almak için önerilen yaklaşım /etc/os-release dosyasını okumaktır.
.NET, yükleme mantığını özelleştirmek için çeşitli uzantı noktaları sağlar; örneğin, NativeLibrary.SetDllImportResolver(Assembly, DllImportResolver), AssemblyLoadContext.ResolvingUnmanagedDll, AssemblyLoadContext.Resolvingve AppDomain.AssemblyResolve. Bunlar geçerli platforma karşılık gelen varlığı yüklemek için kullanılabilir.
Aşağıdaki listede, her işletim sistemi için kullanılan en yaygın RID'lerin küçük bir alt kümesi gösterilmektedir. En son ve tam sürüm için depodaki dotnet/runtime
PortableRuntimeIdentifierGraph.json bakın.
win-x64
win-x86
win-arm64
Daha fazla bilgi için bkz . Windows'a .NET yükleme.
linux-x64
(CentOS Stream, Debian, Fedora, Ubuntu ve türevleri gibi çoğu masaüstü dağıtımı)linux-musl-x64
(Alpine Linux gibi musl kullanan basit dağıtımlar)linux-musl-arm64
(64 bit Arm v8 ve minimalist temel görüntüler için Docker görüntüleri oluşturmak için kullanılır)linux-arm
(Raspberry Pi Model 2+'da Raspbian gibi Arm üzerinde çalışan Linux dağıtımları)linux-arm64
(Raspberry Pi Model 3+ üzerinde Ubuntu Server 64 bit gibi 64 bit Arm üzerinde çalışan Linux dağıtımları)linux-bionic-arm64
(Android'in biyonik libc'sini kullanan dağıtımlar, örneğin Termux)linux-loongarch64
(LoongArch64 üzerinde çalışan Linux dağıtımları)Daha fazla bilgi için bkz . .NET bağımlılıkları ve gereksinimleri.
macOS RID'ler eski "OSX" markasını kullanır.
osx-x64
(En düşük işletim sistemi sürümü macOS 10.12 Sierra'dır)osx-arm64
Daha fazla bilgi için bkz . .NET bağımlılıkları ve gereksinimleri.
ios-arm64
iossimulator-arm64
iossimulator-x64
android-arm64
android-arm
android-x64
android-x86
.NET geri bildirimi
.NET, açık kaynak bir projedir. Geri bildirim sağlamak için bir bağlantı seçin:
Eğitim
Öğrenme yolu
.NET Aspire ile dağıtılmış uygulamalar oluşturma - Training
.NET Aspire ile gözlemlenebilir, üretime hazır, dağıtılmış uygulamalar oluşturmayı öğrenin.