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.
Kısmen kaldırılan .NET yüklemeleri, Microsoft Defender Güvenlik Açığı Yönetimi gibi güvenlik açığı tarama yazılımlarının bir cihazı bildirmesinin yaygın bir nedenidir. .NET yüklemelerinin nasıl çalıştığını anlamak, yöneticilerin raporları araştırmalarına ve düzeltme eylemleri gerçekleştirmelerine yardımcı olabilir.
Windows çalışma zamanı ve SDK gibi .NET bileşenleri birden çok MSI'den oluşur. Tek tek MSI'ler doğrudan dağıtılmaz. Bunun yerine, paket oluşturmak için birlikte zincirlenirler.
Windows'da .NET alma
- Tek başına paketler (EXE) .NET web sitesinden indirilebilir.
- WinGet, .NET paketlerini içeren paketler sağlar.
- Hizmet güncelleştirmeleri paketleri otomatik güncelleştirmeler, WSUS ve Windows Update Kataloğu kullanarak Microsoft Update aracılığıyla dağıtır.
- Bağımsız yazılım satıcıları (ISV) .NET paketlerini yazılımlarının bir parçası olarak yeniden dağıtabilir.
- OEM'ler bazen yeni cihazların fabrika görüntülerine .NET paketlerinin önceden yüklenmiş kopyalarını içerir.
- Windows bazı Azure market görüntüleri, paketlerin önceden yüklenmiş kopyalarını içerir.
- Chocolatey gibi üçüncü taraf paket yöneticileri de .NET paketlerini dağıtır.
- Kuruluşlar bazen iç dağıtım için özel paketler kullanarak paketleri yeniden paketlemektedir.
- Bazı .NET uygulama konakları da kullanıcıları eksik çalışma zamanı paketlerini indirmeye ve yüklemeye yönlendirebilir.
Visual Studio .NET almak için de kullanılabilir ve tek başına paketlerle aynı MSI'leri kullanır.
Note
.NET SDK paketi, 16.2'ye kadar Visual Studio ile birlikte gönderilir. Visual Studio 16.3'teki .NET Core 3.0'dan başlayarak SDK paketleri tek tek .NET MSI'lerle değiştirildi.
Upgrades
.NET, birincil/ikincil sürüm içindeki düzeltme eki sürümleri arasında yükseltmeleri destekler. .NET 8.0.7, yayın öncesi sürümler de dahil olmak üzere 8.0.4 veya 8.0.0 gibi önceki sürümleri yükseltecek, ancak .NET 7.0 gibi önceki bir ana sürümü yükseltmeyecektir. .NET SDK'sı, bir özellik bandı içindeki düzeltme ekleri arasında yükseltmeleri destekler. 8.0.100 SDK 8.0.103'e yükseltilebilir, ancak 8.0.3xx SDK'sı 1xx veya 2xx özellik bantlarını yükseltmez.
Yükseltmelerin çoğu paket düzeyinde işlenir. Önceki sürüm yalnızca yeni sürüm yüklendikten sonra kaldırılır. İki özel durum vardır: .NET konağı ve ASP.NET Core Modülü MSI'leri yerinde güncelleştirilir.
.NET 8'den başlayarak, kullanıcılar bir paketin önceki sürümünü kaldırmayı erteleme seçeneğine sahiptir.
Paket oluşturma ve başvuru sayma
Paketler birden çok MSI'den oluşur ve bazıları birden çok paket arasında paylaşılır.
- Çalışma zamanı paketi, masaüstü çalışma zamanı ve SDK paketlerinde de sevk edilen üç MSI içerir.
- Masaüstü paketi, SDK paketiyle paylaşılan ek bir MSI içerir.
- SDK, .NET uygulamaları oluşturmak ve oluşturmak için kullanılan CLI, şablonlar ve hedefleme paketlerini içeren ek MSI'ler içerir.
Paylaşılan MSI'ler başvuru sayımı kullanılarak yönetilir. Her .NET MSI, bir paketin kendisini bağımlı olarak kaydetmesini sağlayan sağlayıcı anahtarı adlı bir kayıt defteri anahtarı oluşturur. Bir MSI zaten yüklüyse paket yalnızca kayıt bilgilerini güncelleştirir. Paketler kaldırıldıklarında kaydı kaldırılır. Paylaşılan MSI'ler yalnızca kayıtlı bağımlılar olmadığında kaldırılır.
Aşağıdaki kayıt defteri bilgileri, .NET ana bilgisayar MSI sağlayıcı anahtarına bir örnektir. Visual Studio dahil olmak üzere dört kayıtlı bağımlı vardır.
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Installer\Dependencies\Dotnet_CLI_SharedHost_10.0_x64
(Default) REG_SZ {8A8CC49F-7D1E-45DC-B7B5-35FF61A2C25E}
Version REG_SZ 80.40.55332
DisplayName REG_SZ Microsoft .NET Host - 10.0.10 (x64)
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Installer\Dependencies\Dotnet_CLI_SharedHost_10.0_x64\Dependents\VS.{AEF703B8-D2CC-4343-915C-F54A30B90937}
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Installer\Dependencies\Dotnet_CLI_SharedHost_10.0_x64\Dependents\{609A456D-467D-4077-9BA2-B6404F1B1163}
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Installer\Dependencies\Dotnet_CLI_SharedHost_10.0_x64\Dependents\{866BECDA-F284-473A-9E84-0CCE816BF06F}
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Installer\Dependencies\Dotnet_CLI_SharedHost_10.0_x64\Dependents\{FD5EA214-C690-466F-B8FB-1741881913F9}
Note
Bağımlılar, örneğin kaldırma işlemi kesintiye uğradığında, bir paket kaldırıldıktan sonra kayıtlı kaldığında tek tek MSI'ler yalnız kalır.
Note
Visual Studio, VS.{AEF703B8-D2CC-4343-915C-F54A30B90937}kendisini bağımlı olarak kaydetmek için iyi bilinen bir değeri kullanır. Gerçek başvuru sayısı, her Visual Studio örneği için yükleme bildirimi denetlenerek belirlenir.
Bölme tarafından dağıtılan yüklemeler
Bölmeye dağıtılan yüklemeler, MSI ile ilişkilendirilmeyen .NET kopyalarına başvurur. Bu, yükleme betiklerini yönetici olarak çalıştırıp yükleme dizinini 'Program Files\dotnet' olarak ayarlayarak gerçekleştirilebilir. Dağıtılan bölme yüklemeleri düzeltmeyi karmaşıklaştırabilir. Tarayıcılar güvenlik açıklarını bildirir, ancak yöneticiler kaldırılacak MSI'leri bulamaz. DNIM, dağıtılan bölme yüklemelerini algılayabilir.
Algılama
DNIM, .NET ile ilişkili paketleri ve MSI'leri tanımlamak için bir dizi buluşsal çözüme dayanır. Yüklemelerin doğru bir şekilde algılanması, şikayet etmeyen cihazları başarıyla düzeltmek için kritik öneme sahiptir.
Bundles
Paketler, kayıt defterinde depolanan görünen adları ve dosya bilgileri kullanılarak tanımlanır. Geçerli yükleyiciler olduklarından emin olmak için yürütülebilir dosyalarda ek denetimler gerçekleştirilir. Bu informatio ayrıca her sürüm için yayımlanan JSON verileri .NET karşılaştırılır.
MSI Algılama
DNIM, .NET MSI'leri tanımlamak için altında HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18\Components depolanan yükleyici bileşeni verilerinde kapsamlı bir arama gerçekleştirir.
Her alt anahtar farklı bir bileşen kimliğini temsil eder. Her anahtarın altındaki değerler ürün kodlarını temsil eder. Hem bileşen kimliği hem de ürün kodları paketlenmiş GUID'ler olarak depolanır. Aşağıdaki örnek, ile ilişkilendirilmiş bileşene dotnet.exeilişkindir.
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18\Components\BBB993545ADD68342A9E16F83B5CA481
40A3E8A8CB38EDC4299598B366C6A11B REG_SZ C:\Program Files\dotnet\dotnet.exe
A75437C333A10ED46B2CF6AB78E7F1FC REG_SZ C:\Program Files (x86)\dotnet\dotnet.exe
79D2396D1F638B04C9CDAC38562B0100 REG_SZ C:\Program Files\dotnet\dotnet.exe
EA6D9CBF69367CF4CB81005882631FD6 REG_SZ C:\Program Files (x86)\dotnet\dotnet.exe
872D9C61B8AA60F47A4CDF137C8523A3 REG_SZ C:\Program Files (x86)\dotnet\dotnet.exe
6235DF10DB18AED4F910D396BBDD7AE5 REG_SZ C:\Program Files\dotnet\dotnet.exe
0370151E43A53FE48B564853D1B81FAB REG_SZ C:\Program Files\dotnet\dotnet.exe
F6D22817F79056B46B45655C7495EE9A REG_SZ C:\Program Files (x86)\dotnet\dotnet.exe
D512842CB6C6A404BAE605D564042E50 REG_SZ C:\Program Files\dotnet\dotnet.exe
Dağıtılan bölme yüklemeleri
DNIM, yükleyici bileşenleri üzerinde kapsamlı bir arama gerçekleştirdiğinden, altında Program Files\dotnet MSI ile ilişkilendirilmemiş tüm dosyalar, bölme dağıtılan yüklemeler olarak sınıflandırılır.
Classification
Yüklemelerin yanlış sınıflandırılması, yanlış yüklemenin kaldırılmasına veya saklanmasına, uygulamaların bozulmasına veya cihazların uyumlu olmayan bir durumda bırakılmasına neden olabilir.
Bir ürün (örneğin, NET 10) belirlendikten sonra, sürümü (örneğin, 10.0.4) ve destek aşaması (örneğin, etkin) gibi ek bilgiler belirlenebilir. Bu, yöneticilerin esnek dağıtımlar oluşturmasına olanak tanır.
Yüklemeler .NET bileşenine (ASP.NET Core, SDK vb.), mimariye ve yükleme türüne (paket, MSI veya dağıtılan bölme) göre sınıflandırılır.
Bahsetmeye değer bazı özel durumlar var.
.NET Standart 2.1
Tutarlı davranışın sağlanması için yüklemelerin ürün, sürüm ve destek aşamalarını tanımlaması gerekir. .NET Standard 2.1 için hedefleme paketi ilginç bir zorluk sunuyor. Yürütülebilir kod içermez ve yalnızca standart tarafından tanımlanan API'ler için başvuru derlemeleri sağlar. Hedefleme paketi ilk olarak .NET Core 3.0.100 SDK'sının bir parçası olarak gönderildi, ancak .NET 10'a kadar sonraki tüm SDK'lara dahil edildi. DNIM sürümü ve ürünü .NET Core 3.0 kapsamında sınıflandıracak olsa da destek aşaması her zaman etkin olarak bildirilir çünkü etkin destekte olan SDK'lara dahil edilebilir.
Note
.NET Standard 2.1 hedefleme paketi, .NET 10'da SDK yüklemesinden kaldırıldı. SDK'lar, uygulama oluştururken NuGet paketlerini kullanarak eksik hedefleme paketlerini otomatik olarak indirir.
.NET SDK özellik bantları
.NET Core 1.0 ve 1.1'de SDK'lar runime'ye benzer bir sürüm oluşturma şeması kullandı. .NET Core 1.1'deki son SDK 1.1.14 olarak sürümlendi ve 1.1.13 çalışma zamanını içeriyordu.
SDK özellikleri bantları, Visual Studio'da desteklenen özellikler arasında ayrım yapmak için 2.1.100 SDK'da kullanıma sunulmuştur. SDK, .NET Core 2.0.5 sürümünün bir parçası olarak gönderildi. Son 2.0 SDK'sı 2.1.202 olarak sürümlendi ve 2.0.9 sürümüne dahil edildi. .NET Core 2.1'de sevk edilen ilk SDK 2.1.300 olarak sürümlendi. Sonraki sürümlerde SDK özellik bantları her zaman 2.2.100, 3.0.100 vb. 100'de başlar.