Есть ли способ определить версию .NET Framework из командной строки?

Иногда для устранения неполадок при установке мне просто нужен быстрый ответ на вопрос, какая версия .NET установлена.

Есть ли способ определить версию .NET Framework в стандартной системе Windows, кроме просмотра каталогов?

ПРИМЕЧАНИЕ. Это не для машины для разработки, а только для готовых окон.

Следующее работает, но я ищу более простой способ.

каталог% WINDIR% \ Microsoft.Net \ Framework \ v *

Directory of C:\Windows\Microsoft.Net\Framework

07/13/2009  07:20 PM    <DIR>          v1.0.3705
07/13/2009  07:20 PM    <DIR>          v1.1.4322
01/20/2010  01:16 PM    <DIR>          v2.0.50727
07/13/2009  09:37 PM    <DIR>          v3.0
01/20/2010  01:02 PM    <DIR>          v3.5
02/10/2010  03:20 AM    <DIR>          v4.0.21006

ОБНОВЛЕНИЕ: не решение, а еще один классный листинг в формате каталога

каталог% WINDIR% \ Microsoft.Net \ Framework \ v * / O: -N / B

v4.0.21006
v3.5
v3.0
v2.0.50727
v1.1.4322
v1.0.3705

person Noah    schedule 10.02.2010    source источник
comment
Как вы хотите использовать информацию? В сценарии? Иначе я не знаю, что может быть проще dir   -  person Dirk Vollmar    schedule 10.02.2010
comment
Это для поддержки; Я пытался помочь своему престарелому отцу; Просто представьте, как пожилой человек, не являющийся компьютером, набирает по телефону dir% WINDIR% \ Microsoft.Net \ Framework \ v *. Вот что заставило меня думать, что должен быть лучший способ   -  person Noah    schedule 10.02.2010
comment
Пора установить CrossLoop на папин компьютер! :)   -  person Dave    schedule 10.02.2010
comment
Вероятно, вы должны отметить в самом вопросе, что вас не интересует эта информация специально для машин разработки.   -  person Mike Burton    schedule 10.02.2010
comment
@Noah: ПРИМЕЧАНИЕ. Это не для машины для разработки, а только для готовых окон - вы имеете в виду буквально «из коробки»? Если это так, то вы можете сказать своему отцу версию .NET, которая у него есть, просто зная версию Windows. Например. В Windows 7 установлена ​​версия 3.5, в XP без SP вообще нет .NET и т. Д.   -  person Igor Korkhov    schedule 10.02.2010
comment
@Igor - Не буквально, но очень хорошо, что версия для Windows может дать много полезной информации о проблеме.   -  person Noah    schedule 11.02.2010


Ответы (7)


Основываясь на вашем обновлении, которое указывает, что оно предназначено для ознакомления с ним конечного пользователя, не обладающего техническими знаниями, я предлагаю перейти на сайт Скотта Хансельмана http://www.smallestdotnet.com (используйте Internet Explorer), который использует строку пользовательского агента, чтобы сообщить вам, какая .NET Framework у вас установлена, и дает рекомендации по наиболее эффективному использованию последней версии.

Старый ответ
Это можно сделать с помощью PowerShell (хотя наличие PowerShell уже предполагает наличие как минимум .NET 2.0)

Get-ChildItem "$($Env:WinDir)\Microsoft.Net\Framework" -i mscorlib.dll -r |
    ForEach-Object { $_.VersionInfo.ProductVersion }

Я не знаю, есть ли аналогичный способ получить информацию о версии в простом старом crusty cmd.exe.

person Josh    schedule 10.02.2010

reg query "HKLM\Software\Microsoft\NET Framework Setup\NDP" /s /v version | findstr /i version | sort /+26 /r

Верхняя запись - это последняя версия установленного фреймворка.

Примечание. Это не работает с v1.x фреймворка.

Обновление: я пропустил комментарий о том, что вы хотите что-то сказать своему отцу по телефону. В этом случае приведенная выше команда, вероятно, не лучший подход для вас. Возможно, вам будет лучше просто сказать своему отцу, чтобы он открыл проводник Windows, переместил его в каталог .NET Framework и назвал там числа.

person Franci Penov    schedule 10.02.2010
comment
можно ли это сделать против машин в сети? ИМО, это лучший ответ, поскольку он дает версии патчей, такие как 4.5 и 4.5.1. - person BlackICE; 14.03.2014
comment
Сетевая версия проста: reg query \\ ‹machinename› \ HKLM \ Software \ Microsoft \ NET Framework Setup \ NDP / s / v version | findstr / i версия | сортировка / + 26 - person BlackICE; 14.03.2014

просто откройте командную строку VS2008 и введите clrver

person Dave    schedule 10.02.2010
comment
И машина конечного пользователя не будет иметь VS2008. - person Joe; 10.02.2010
comment
спасибо за отрицательный голос после того, как сообщение было обновлено информацией, которой у меня не было в то время, когда я предложил ответ. - person Dave; 10.02.2010
comment
Я действительно считаю, что отрицательные голоса должны стоить больше репутации (и становиться бесплатными после того, как вы сами добьетесь определенной репутации), так что отрицательные голоса зарезервированы для ответов, которые просто совершенно неверны. Этот ответ не требует отрицательного голоса. - person Josh; 10.02.2010

ИЗМЕНИТЬ: мой ответ не имеет отношения к вопросу OP (который был отредактирован после того, как я изначально ответил).

Согласно MSDN, вы также можете использовать реестр для проверки установленных версий.

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

person Dror    schedule 10.02.2010

Следующее будет определять, установлен ли .net framework 3.5 или нет ... и, если не установлено, установит его. Просто запустите это в командной строке.

if exist "%WINDIR%\Microsoft.Net\Framework\v3.5" goto end start /wait .\Framework\dotnetfx.exe /q /norestart" :end 

Если вы хотите обнаружить другие версии, просто замените v3.5 на v2.0 или v1.0, в зависимости от обстоятельств. Кроме того, если .net не обнаружен, установка инфраструктуры .net будет выполняться в автоматическом режиме, то есть без пользовательского интерфейса или взаимодействия с пользователем.

person HotTester    schedule 16.02.2010

В CodeProject есть статья, которая может делать именно это, плюс его команда на основе линии.

Надеюсь это поможет.

person t0mm13b    schedule 10.02.2010

Самый высокий номер версии из этого списка каталогов - это установленная версия.

Как видите, любая версия включает в себя все предыдущие версии, поэтому проверьте поддержку конкретной версии = проверьте этот конкретный каталог.

person Joshua    schedule 10.02.2010
comment
любая версия включает в себя все предыдущие версии - нет, это не так. v2.0, например, не включает 1.0. - person Igor Korkhov; 10.02.2010
comment
@ Игорь а что? Если у вас 2.0, не все ли приложения 1.0 запускаются? - person Joshua; 10.02.2010
comment
вопрос касался установленных версий .NET Framework, и я ничего не сказал о запуске приложения v1.0 под framework v2.0 - person Igor Korkhov; 11.02.2010
comment
Обычно, когда спрашивают, установлена ​​ли .NET framework версии x, причина заключается в том, чтобы запустить приложение, скомпилированное для версии x. - person Joshua; 11.02.2010