Какой надежный способ определить, какая версия (версии) .NET установлена ​​на производственном Windows Server? - PullRequest
99 голосов
/ 26 сентября 2008

Этот вопрос связан не столько с программированием, сколько с развертыванием.

Я часто разговариваю с группой в моей компании, чья работа заключается в том, чтобы поддерживать наши рабочие серверы Windows и развертывать на них наш код. По юридическим причинам и причинам соответствия, я не имею прямой видимости или какого-либо контроля над серверами, поэтому единственный способ узнать, какие версии .NET установлены на любой из них, - это указания, которые я даю этой группе.

Пока что все способы, которые я могу придумать, чтобы сказать, какая версия (версии) установлены (проверьте, соответствуют ли средства администрирования, соответствующие 1.1 или 2.0, проверьте записи в списке «Установка и удаление программ», проверьте наличие наличие каталогов в c: \ Windows \ Microsoft.NET) имеет недостатки (я видел по крайней мере одну машину с 2.0, но без записей 2.0 в административных инструментах - и этот метод ничего не говорит о 3.0+, «Добавить / Удалить» Список программ может не совпадать с реальностью, и наличие каталогов не обязательно означает что-либо).

Учитывая то, что мне, как правило, нужно знать, что все это уже готово (обнаружение, что "к сожалению, у этого нет всех необходимых вам версий и пакетов обновления", не очень хорошо работает с короткими окнами обслуживания) и Я должен выполнить проверку «по доверенности», так как я не могу получить доступ к серверам напрямую, какой надежный способ определить, какая версия (версии) .NET установлена ​​на производственном Windows Server? Желательно какой-то встроенный способ сделать это, используя то, что устанавливает фреймворк, так как это будет быстрее и не потребует какой-либо утилиты для загрузки, а также метод, который определенно потерпит неудачу, если фреймворки не установлены должным образом, но все еще имеют файлы (например есть каталог, в который вставлен gacutil.exe, но эта версия фреймворка на самом деле не "установлена")

РЕДАКТИРОВАТЬ: В отсутствие хорошего надежного встроенного способа сделать это встроенным в Framework (s), кто-нибудь знает хорошую, легкую, не требующую установки программу, которая может найти это из? Я могу представить, что кто-то мог бы легко написать один, но если бы он уже существовал, это было бы еще лучше.

Ответы [ 19 ]

54 голосов
/ 26 сентября 2008

Вы должны открыть IE на сервере, для которого вы ищете эту информацию, и перейти на этот сайт: http://www.hanselman.com/smallestdotnet/

Это все, что нужно.

На сайте есть скрипт, который просматривает «UserAgent» вашего браузера и определяет, какая версия (если есть) .NET Framework у вас установлена ​​(или не установлена), и отображает ее автоматически (затем вычисляет общий размер). если вы решили скачать .NET Framework).

24 голосов
/ 26 сентября 2008

Вы можете программно проверить реестр и некоторые другие вещи согласно этой записи в блоге .

Ключ реестра для просмотра -

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\...]
19 голосов
/ 13 сентября 2013

Найден ответ от здесь :

Проверьте, какая версия .NET Framework установлена ​​

Откройте командную строку и скопируйте и вставьте одну из следующих командных строк

dir %WINDIR%\Microsoft.Net\Framework\v*

или

dir %WINDIR%\Microsoft.Net\Framework\v* /O:-N /B
15 голосов
/ 26 сентября 2008

Путь Microsoft таков:

MSDN: Как определить, какие версии .NET Framework установлены (который направляет вас к следующему разделу реестра: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\...)

Если вы хотите надежную защиту, это другое дело. Я бы не стал беспокоиться о копировании папки фреймворка. Если бы кто-то сделал это, я бы посчитал компьютер сломанным.

Самый надежный способ - написать небольшую программу, использующую каждую версию .NET и библиотеки, которые вам нужны, и запустить их.

Для метода без установки PowerBasic - отличный инструмент. Это создает небольшой исполняемый файл не требуется. Это может автоматизировать проверки, описанные в статье MS KB выше.

15 голосов
/ 01 июня 2009

Согласно ответу CodeTrawler , решение состоит в том, чтобы ввести следующее в окне обозревателя:

% SystemRoot% \ Microsoft.NET \ Framework

Тогда ищите:

mscorlib.dll

... и щелкните правой кнопкой мыши / перейдите на вкладку версии для каждого результата.

7 голосов
/ 20 июня 2012

http://www.asoft.be/prod_netver.html

Используйте эту «хорошую, легкую, не требующую установки программу»

3 голосов
/ 26 сентября 2008

Если на машине, которую вы хотите проверить, установлен .NET SDK, вы можете использовать командную строку SDK и запустить программу CLRVer.exe.

3 голосов
/ 26 сентября 2008

Официальный ответ Microsoft о том, как это сделать, находится в статье KB 318785 .

1 голос
/ 26 сентября 2008

Официальный способ обнаружения .NET 3.0 описан здесь

http://msdn.microsoft.com/en-us/library/aa480198.aspx

Недостаток, потому что он требует, чтобы вызывающая сторона имела разрешения на доступ к реестру.

В MSDN также упоминается метод обнаружения .NET 3.5 путем проверки строки агента пользователя:

http://msdn.microsoft.com/en-us/library/bb909885.aspx

Я думаю, что Microsoft должна была сделать лучшую работу, чем эта.

1 голос
/ 26 сентября 2008

Развертывание OneTouch сделает все обнаружение и установку предварительных условий. Вероятно, лучше пойти с готовым решением, чем пытаться накатить свое. Попытка накатить свою версию может привести к проблемам, потому что все, что вы вводите, может измениться с помощью исправления или пакета обновления. Вероятно, у Microsoft есть некоторая эвристика для определения, какая версия работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...