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 --version zwraca 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 --version gdy 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