Этот вопрос связан не столько с программированием, сколько с развертыванием.
Я часто общаюсь с группой в моей компании, чья работа заключается в поддержке наших рабочих серверов Windows и развертывании на них нашего кода. По причинам, связанным с законодательством и соответствием требованиям, у меня нет прямой видимости или какого-либо контроля над серверами, поэтому единственный способ узнать, какая версия (версии) .NET установлена на любом из них, - это указать указания, которые я даю этой группе.
Пока что все методы, которые я могу придумать, чтобы определить, какая версия (и) установлена (проверьте наличие административных инструментов, соответствующих 1.1 или 2.0, проверьте записи в списке «Установка и удаление программ», проверьте наличие каталоги в c: \ Windows \ Microsoft.NET) ошибочны (я видел по крайней мере один компьютер с 2.0, но без записей 2.0 в административных инструментах - и этот метод ничего не говорит вам о 3.0+, списке "Установка и удаление программ" могут рассинхронизироваться с реальностью, и наличие каталогов не обязательно что-то означает).
Учитывая, что мне обычно нужно знать, что эти вещи есть, заранее (обнаружение, что «ой, у этого нет всех версий и пакетов обновления, которые вам нужны», на самом деле не работает с короткими окнами обслуживания), и я должен выполните проверку «через прокси», так как я не могу напрямую подключиться к серверам, каков надежный способ узнать, какие версии .NET установлены на производственном сервере Windows? Предпочтительно какой-то внутренний способ сделать это, используя то, что устанавливает фреймворк, поскольку он будет быстрее и не потребует загрузки какой-либо утилиты, а также метод, который определенно не сработает, если фреймворки не установлены должным образом, но все еще есть файлы (т.е. , там каталог и gacutil.exe вставлен в него, но эта версия фреймворка на самом деле не "установлена")
РЕДАКТИРОВАТЬ: В отсутствие надежного встроенного способа сделать это, встроенного в Framework (ы), знает ли кто-нибудь о хорошей, легкой, не требующей установки программе, которая может это выяснить? Я могу представить, что кто-то легко мог бы написать его, но если он уже существует, это было бы еще лучше.
источник
Ответы:
Вам следует открыть IE на сервере, для которого вы ищете эту информацию, и перейти на этот сайт: http://www.hanselman.com/smallestdotnet/
Это все, что нужно.
На сайте есть скрипт, который просматривает UserAgent вашего браузера и определяет, какая версия (если есть) .NET Framework у вас установлена (или не установлена), и отображает ее автоматически (а затем вычисляет общий размер, если вы выбрали для загрузки .NET Framework).
источник
Вы можете программно проверить реестр и многое другое в соответствии с этой записью в блоге .
Ключ реестра, на который следует обратить внимание:
источник
Нашел ответ отсюда :
Откройте командную строку и скопируйте и вставьте одну из следующих командных строк.
или
источник
Согласно ответу CodeTrawler , решение состоит в том, чтобы ввести следующее в окно проводника:
Затем ищите:
... и щелкните правой кнопкой мыши / перейдите на вкладку версии для каждого результата.
источник
Способ Microsoft таков:
MSDN: Как определить , какие платформы .NET Framework версия установлена (который направляет вас к следующему разделу реестра:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\...
)Другое дело, если вам нужна защита от дурака. Я бы не стал беспокоиться о копии папки framework. Если бы кто-то сделал это, я бы посчитал компьютер сломанным.
Самый надежный способ - написать небольшую программу, использующую каждую версию .NET и библиотеки, которые вам нужны, и запустить их.
Для метода без установки PowerBasic - отличный инструмент. Он создает небольшие исполняемые файлы exe. Он может автоматизировать проверки, описанные в статье MS KB выше.
источник
http://www.asoft.be/prod_netver.html
Используйте эту «хорошую, легкую, не требующую установки программу»
источник
Если на компьютере, который вы хотите проверить, установлен .NET SDK, вы можете использовать командную строку SDK и запустить программу
CLRVer.exe
.источник
Официальный ответ Microsoft о том, как это сделать, находится в статье 318785 базы знаний .
источник
Развертывание OneTouch выполнит все обнаружение и установку необходимых компонентов. Вероятно, лучше использовать готовое решение, чем пытаться накатить собственное. Попытка свернуть свой собственный может привести к проблемам, потому что все, что вы нажмете, может измениться с исправлением или пакетом обновления. Вероятно, у Microsoft есть эвристика для определения того, какая версия работает.
источник
Официальный способ обнаружения .NET 3.0 описан здесь.
http://msdn.microsoft.com/en-us/library/aa480198.aspx
Ошибочно, потому что для этого требуется, чтобы у вызывающей стороны были разрешения на доступ к реестру.
MSDN также упоминает способ обнаружения .NET 3.5 путем проверки строки User Agent:
http://msdn.microsoft.com/en-us/library/bb909885.aspx
Я думаю, что Microsoft следовало бы сделать лучше, чем это.
источник
Также см. Вопрос о переполнении стека. Как определить, какие версии .NET Framework и пакеты обновления установлены? в котором также упоминается:
Идентификатор статьи: 318785 - Последняя проверка: 7 ноября 2008 г. - Версия: 20.1 Как определить, какие версии .NET Framework установлены и были ли применены пакеты обновления.
К сожалению, похоже, что это не работает, потому что
mscorlib.dll
версия в каталоге 2.0 имеет версию 2.0, аmscorlib.dll
в каталогах 3.0 или 3.5 нет версии, даже если установлен 3.5 SP1 ... Почему официальный ответ Microsoft будет так дезинформированы?источник
Чтобы определить, поддерживает ли ваш сервер .NET Framework 4.5 и более поздних версий (проверено до 4.5.2): Если у вас нет доступа к реестру на сервере , но есть права на публикацию приложения на этом сервере, создайте приложение MVC 5 с тривиальным контроллер, например:
Затем в Web.config просмотрите нужные версии .NET Framework в следующем разделе, изменив
targetFramework
значения по желанию:Опубликуйте каждую цель на своем сервере, затем перейдите к
<app deploy URL>/Default
. Если ваш сервер поддерживает целевую платформу, тогда простая строка будет отображаться из вашего тривиального контроллера. В противном случае вы получите сообщение об ошибке следующего вида:Итак, в этом случае мой целевой сервер еще не поддерживает .NET Framework 4.5.2.
источник
Чтобы получить установленную версию dotnet,
создайте консольное приложение. Добавить этот класс Запустить
источник
Как ни странно, я написал код, чтобы сделать это, когда вышла 1.1 (что это было, семь лет назад?), И немного подправил его, когда вышла 2.0. Я не смотрел на это годами, так как мы больше не управляем нашими серверами.
Это не надежно, но я все равно публикую его, потому что считаю это забавным; в том, что это проще сделать в .NET и еще проще - в Power Shell.
источник
Как и сказал Дин, вы можете посмотреть реестр и сделать то, что он сделал. Чтобы проверить, действительно ли у него установлена среда CLR .NET Framework, вы должны найти
MSCorEE.dll
файл в%SystemRoot%\System32
каталоге.источник
Вероятно, это неприятный способ узнать версии, но у меня всегда было впечатление, что все версии устанавливаются
<root>:\WINDOWS\Microsoft.NET\Framework
.Это обеспечивает папки с именами,
v2.0.50727
которые, как мне кажется, дают подробную информацию о версии.источник
Если вы хотите найти версии до .NET 4.5, используйте код для консольного приложения. Как это:
В противном случае вы можете найти .NET 4.5 или новее, выполнив такой запрос:
Затем в результатах консоли будет указано, какие версии установлены и доступны для использования с вашими развертываниями. Этот код тоже пригодится, потому что у вас есть их как сохраненные решения на всякий случай, когда вы захотите проверить его в будущем.
источник
Я зашел в Центр обновления Windows и посмотрел историю обновлений, зная, что исправления на сервере обновляются. Я просмотрел обновления .NET, и он показал мне, в каких именно версиях были обновления, что позволило мне сделать вывод, какие версии были установлены.
источник
Я нашел это весьма полезным. вот источник
источник