Niniejsza analiza prezentuje wieloaspektowe techniki wykrywania i weryfikowania instalacji .NET na różnych systemach operacyjnych, ze szczególnym uwzględnieniem poleceń w środowiskach Windows CMD/PowerShell, dystrybucjach systemu Linux oraz macOS. Zmiany w sposobach wykrywania wersji .NET pojawiły się wraz z debiutem .NET Core, a następnie wdrożeniem zunifikowanej platformy .NET, przez co obecnie niezbędne jest zarówno rozumienie klasycznych metod detekcji Frameworka, jak i nowoczesnych narzędzi CLI. Współczesne środowiska IT wymagają, by programiści i administratorzy sprawnie identyfikowali zainstalowane wersje, dostępność SDK oraz środowisk uruchomieniowych, co czyni wykrywanie wersji .NET kluczową umiejętnością operacyjną.
Zrozumienie ekosystemu .NET i podstaw wykrywania wersji
Ekosystem .NET obejmuje różne generacje platformy, a każda z nich wymaga odmiennej strategii detekcji. .NET Framework (Windows) wykorzystuje wpisy rejestru systemowego, natomiast nowoczesny .NET Core oraz zunifikowana platforma .NET od wersji 5 opierają się głównie o narzędzia CLI. Różnice te determinują stosowane polecenia i sposób interpretacji wyników.
Architektura instalacji .NET składa się z kilku komponentów:
- sdk .NET z narzędziami deweloperskimi oraz wbudowanymi środowiskami uruchomieniowymi,
- pakiety runtime oferujące wyłącznie środowisko uruchomieniowe,
- osobne środowiska takie jak ASP.NET Core Runtime lub Windows Desktop Runtime z niezależnymi schematami wersjonowania.
Na jednym systemie mogą współistnieć różne wersje runtime i SDK, dlatego precyzyjna detekcja wymaga kilku uzupełniających się poleceń.
Systemy Windows przechowują informacje o wersjach .NET w scentralizowanych lokalizacjach (Program Files, rejestr Windows), podczas gdy Linux i macOS umożliwiają różnorodne sposoby instalacji (menedżery pakietów, ręczne wdrożenia), co prowadzi do rozmaitych struktur katalogów i wymusza elastyczność w podejściu do detekcji.
Weryfikacja wersji .NET w systemach Windows
Poniżej przedstawiamy praktyczne podejścia do detekcji .NET na systemach Windows:
- dotnet CLI – polecenie
dotnet --versionzwraca najwyższą wersję SDK dostępną do kompilacji projektów, - dotnet –info – prezentuje szczegóły: zainstalowane środowiska uruchomieniowe (m.in. Microsoft.NETCore.App, Microsoft.AspNetCore.App, Microsoft.WindowsDesktop.App) oraz ścieżki instalacji,
- dotnet –list-sdks / –list-runtimes – wyświetlają odpowiednio wszystkie zestawy SDK oraz zainstalowane środowiska uruchomieniowe z lokalizacjami na dysku.
Dla klasycznego .NET Framework niezawodność zapewnia analiza wpisów rejestru Windows. Polecenia PowerShell, wykorzystujące ścieżkę HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP, umożliwiają wykrycie zarówno wersji głównych, jak i Service Packów.
Narzędzia wiersza poleceń i metody CLI .NET
Omawiamy spójne narzędzia CLI, które sprawdzają się na wszystkich platformach z nowoczesnym .NET:
- dotnet –version – podaje aktywną wersję SDK, z której będzie korzystać system podczas kompilacji;
- dotnet –info – generuje szeroki raport z wersjami SDK, runtime, lokalizacjami instalacji, szczegółami systemowymi i identyfikatorami RID;
- dotnet –list-sdks – pokazuje zestawy SDK dostępne w systemie wraz z lokalizacją;
- dotnet –list-runtimes – prezentuje wyłącznie środowiska uruchomieniowe, przydatne m.in. do weryfikacji kompatybilności wdrożeń.
CLI zapewnia pełną transparentność, co szczególnie istotne w przypadku środowisk wieloplatformowych i rozbudowanych instalacji .NET.
Metody wykrywania na podstawie rejestru w Windows
Rejestr Windows to autorytatywne źródło dla identyfikacji .NET Framework:
- wpisy rejestru – klucz Release pozwala określić dokładną wersję (zgodnie z tabelami Microsoftu);
- PowerShell Get-ItemProperty – umożliwia masowe czytanie wartości i analizę wszystkich podkluczy .NET Framework;
- skrypty PowerShell – automatyzują zbieranie danych o wersjach i Service Packach oraz statusie instalacji.
Ta metoda jest niezbędna na stacjach roboczych i serwerach pozbawionych nowoczesnego .NET i narzędzi CLI.
Detekcja .NET na systemach Linux
Systemy Linux wymagają elastycznego podejścia ze względu na rozproszone sposoby instalacji. Rekomendowane polecenia i ścieżki prezentujemy poniżej:
- standardowe polecenia dotnet CLI –
dotnet --version,dotnet --info,dotnet --list-sdks,dotnet --list-runtimes, - ścieżki instalacji – najczęściej
/usr/share/dotnet/lub/home/user/dotnet/, - ręczna detekcja przez wskazanie ścieżki binariów – np.
/sciezka/do/dotnet/dotnet --versiongdy CLI nie jest w PATH.
Prawidłowo skonfigurowany PATH oraz znajomość struktury katalogów ułatwiają detekcję i rozwiązanie problemów zgodności narzędzi .NET na Linuksie.
Instalacja i wykrywanie .NET na macOS
Specyfika macOS, zwłaszcza w kontekście architektury Apple Silicon, narzuca unikalne wymagania instalacyjne oraz detekcyjne:
- instalacje przez oficjalne paczki lub ręczne kopiowanie binariów – różne ścieżki na dysku,
- architektura ARM64 (Apple Silicon) kontra x64 (Intel) – wymaga właściwego doboru paczki instalacyjnej,
- standardowa ścieżka instalacji –
/usr/local/share/dotnet/, - konfiguracja PATH – automatyczna dla paczek, ręczna dla instalacji manualnych.
Detekcja odbywa się identycznie jak w Linux i Windows, a polecenie dotnet --info pozwala zweryfikować zgodność wersji .NET z architekturą komputera.
Różnice między .NET Framework a nowoczesnym .NET
Aby w pełni audytować środowisko, niezbędna jest znajomość różnic pomiędzy klasycznym .NET Framework a współczesnym .NET:
- .NET Framework – wyłącznie Windows, wersjonowanie i detekcja przez rejestr, ostatnia duża wersja to 4.8.1,
- nowoczesny .NET (od .NET Core) – środowisko wieloplatformowe, wersje ujawniane przez CLI, numerowanie semantyczne,
- systemy z oboma środowiskami wymagają połączonych strategii detekcyjnych (rejestr + CLI dotnet).
Wersje .NET Framework rozpoznaje się po wartości klucza Release w rejestrze, którą automatyczne skrypty PowerShell tłumaczą na konkretne numery wersji.
Zaawansowane techniki wykrywania i rozwiązywanie problemów
W środowiskach wymagających szczegółowego audytu rekomendowane są następujące narzędzia i praktyki:
- moduły PowerShell, np. DotNetVersionLister – zaawansowana analiza i generowanie szczegółowych raportów o zainstalowanych wersjach,
- analiza katalogu
C:\Program Files\dotnet\– ręczna weryfikacja podziału na SDK oraz runtime, szczególnie gdy CLI jest nieaktywne, - kontrola zmiennych środowiskowych i ścieżek (PATH) – szybka diagnostyka niedostępności dotnet CLI,
- testowe uruchomienie komendy
dotnet new console– sprawdzanie integralności SDK i poprawności konfiguracji środowiska.
Kombinacja powyższych narzędzi pozwala zidentyfikować niepełne instalacje i uszkodzone środowiska, a także zapewnia rzetelny audyt środowisk .NET na różnych platformach.
Przykładowa tabela porównawcza metod wykrywania wersji .NET
Poniżej przedstawiamy zestawienie najpopularniejszych metod weryfikacji wersji .NET w zależności od platformy:
| Platforma | Metoda detekcji | Polecenie/narzędzie | Zwracane dane |
|---|---|---|---|
| Windows | CLI dotnet | dotnet --version, dotnet --info |
SDK, runtime, architektura, ścieżki |
| Windows (Framework) | Rejestr | PowerShell, klucz Release | Wersje Framework, Service Packi |
| Linux | CLI dotnet | dotnet --version, dotnet --info |
SDK, runtime, ścieżki instalacji, architektura |
| macOS | CLI dotnet | dotnet --version, dotnet --info |
SDK, runtime, ścieżki, architektura ARM64/x64 |