Этот вопрос связан не столько с программированием, сколько с развертыванием.
Я часто общаюсь с группой в моей компании, чья работа заключается в поддержке наших рабочих серверов Windows и развертывании на них нашего кода. По причинам, связанным с законодательством и соответствием требованиям, у меня нет прямой видимости или какого-либо контроля над серверами, поэтому единственный способ узнать, какая версия (версии) .NET установлена на любом из них, - это указать указания, которые я даю этой группе.
Пока что все методы, которые я могу придумать, чтобы определить, какая версия (и) установлена (проверьте наличие административных инструментов, соответствующих 1.1 или 2.0, проверьте записи в списке «Установка и удаление программ», проверьте наличие каталоги в c: \ Windows \ Microsoft.NET) ошибочны (я видел по крайней мере один компьютер с 2.0, но без записей 2.0 в административных инструментах - и этот метод ничего не говорит вам о 3.0+, списке "Установка и удаление программ" могут рассинхронизироваться с реальностью, и наличие каталогов не обязательно что-то означает).
Учитывая, что мне обычно нужно знать, что эти вещи есть, заранее (обнаружение, что «ой, у этого нет всех версий и пакетов обновления, которые вам нужны», на самом деле не работает с короткими окнами обслуживания), и я должен выполните проверку «через прокси», так как я не могу напрямую подключиться к серверам, каков надежный способ узнать, какие версии .NET установлены на производственном сервере Windows? Предпочтительно какой-то внутренний способ сделать это, используя то, что устанавливает фреймворк, поскольку он будет быстрее и не потребует загрузки какой-либо утилиты, а также метод, который определенно не сработает, если фреймворки не установлены должным образом, но все еще есть файлы (т.е. , там каталог и gacutil.exe вставлен в него, но эта версия фреймворка на самом деле не "установлена")
РЕДАКТИРОВАТЬ: В отсутствие надежного встроенного способа сделать это, встроенного в Framework (ы), знает ли кто-нибудь о хорошей, легкой, не требующей установки программе, которая может это выяснить? Я могу представить, что кто-то легко мог бы написать его, но если он уже существует, это было бы еще лучше.