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