To pytanie nie tyle jest związane z programowaniem, ile z wdrażaniem.
Często rozmawiam z grupą w mojej firmie, której zadaniem jest utrzymywanie naszych produkcyjnych serwerów Windows i wdrażanie na nich naszego kodu. Ze względów prawnych i związanych ze zgodnością nie mam bezpośredniego wglądu w serwery ani żadnej kontroli nad serwerami, więc jedynym sposobem, w jaki mogę sprawdzić, które wersje .NET są zainstalowane na którymkolwiek z nich, są wskazówki, które udzielam tej grupie.
Do tej pory wszystkie metody, które przychodzą mi do głowy, aby stwierdzić, które wersje są zainstalowane (sprawdź, czy narzędzia administracyjne pasują do 1.1 lub 2.0, sprawdź wpisy na liście „Dodaj / usuń programy”, sprawdź, czy istnieją katalogi w c: \ Windows \ Microsoft.NET) są wadliwe (widziałem co najmniej jedną maszynę z wpisami 2.0, ale bez wpisów 2.0 w Narzędziach administracyjnych - i ta metoda nie mówi nic o 3.0+, liście "Dodaj / Usuń programy" może stracić synchronizację z rzeczywistością, a istnienie katalogów niekoniecznie musi cokolwiek oznaczać).
Biorąc pod uwagę, że generalnie muszę wiedzieć, że te rzeczy są na miejscu z wyprzedzeniem (odkrycie, że „Ups, ten nie ma wszystkich wersji i dodatków Service Pack, których potrzebujesz” nie działa dobrze z krótkimi oknami serwisowymi) i muszę sprawdzać „przez proxy”, ponieważ nie mogę uzyskać bezpośredniego dostępu do serwerów. Jaki jest niezawodny sposób sprawdzenia, które wersje .NET są zainstalowane na produkcyjnym serwerze Windows? Najlepiej jest to zrobić za pomocą tego, co instaluje framework, ponieważ będzie to szybsze i nie będzie wymagało załadowania jakiegoś narzędzia, a także metody, która z pewnością zawiedzie, jeśli frameworki nie są poprawnie zainstalowane, ale nadal mają pliki na miejscu (tj. , istnieje katalog, w którym znajduje się plik gacutil.exe, ale ta wersja frameworka nie jest tak naprawdę „zainstalowana”)
EDYCJA: Wobec braku dobrego, niezawodnego, wewnętrznego sposobu zrobienia tego wbudowanego w Framework (y), czy ktoś zna dobry, lekki, niewymagający instalacji program, który może to sprawdzić? Mogę sobie wyobrazić, że ktoś mógłby z łatwością taki napisać, ale jeśli już istnieje, byłoby jeszcze lepiej.