Подтвердить что ты не робот

Есть ли команда командной строки для проверки того, какая версия .NET установлена

У меня есть набор скриптов для выполнения сценариев. Вы можете использовать сценарии на любом сервере 2008 года. Тем не менее, мне нужно проверить, установлен ли .NET 3.5 (до запуска скриптов) с помощью пакетного файла dos. Это возможно?

Я знаю, что могу проверить, существует ли файл в C:\WINDOWS\Microsoft.NET\Framework\v3.5, но было бы неплохо иметь что-то более надежное.

Я хотел бы проверить, действительно ли он установлен, а не только, если существует файл dir/.

Спасибо

4b9b3361

Ответ 1

К сожалению, лучший способ - проверить этот каталог. Я не уверен, что вы имеете в виду, но "фактически установлен", поскольку .NET 3.5 использует ту же среду CLR, что и .NET 3.0 и .NET 2.0, поэтому все новые функции завершаются в новых сборках, которые живут в этом каталоге. В принципе, если каталог существует, то устанавливается 3.5.

Единственное, что я хотел бы добавить, - найти директорию для максимальной гибкости:

%windir%\Microsoft.NET\Framework\v3.5

Ответ 2

Поскольку вы сказали, что хотите узнать, действительно ли он установлен, я считаю, что лучший способ (не доходящий до версии определенного кода) - это проверить заведомо названный ключ реестра "Установить". 0x1 означает "да":

C:\>reg query "HKLM\SOFTWARE\Microsoft\NET Framework Setup\NDP\v3.5"| findstr Install

   Install     REG_DWORD       0x1
   InstallPath REG_SZ  c:\WINNT\Microsoft.NET\Framework\v3.5\

Это также официальный официальный метод

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

Наконец, вы можете настроить тестовый сайт интрасети, доступный с вашего сервера, и обнюхивает User Agent для определения версий .NET. Но это, конечно, не пакетное решение. Также см. .

Ответ 3

Вы имеете в виду, что команда DOS, такая как ниже, выполняет задание, отображающее установленные платформы .NET:

wmic /namespace:\\root\cimv2 path win32_product where "name like '%%.NET%%'" get version

Затем может отображаться следующее:

Version
4.0.30319

WMIC очень полезен, как только вы его освоите, гораздо проще, чем кодирование WMI в сценариях в зависимости от того, чего вы хотите достичь.

Ответ 4

Вы можете написать себе небольшое консольное приложение и использовать System.Environment.Version, чтобы узнать версию. Скотт Гензельман сообщает об этом блоге.

Или загляните в реестр для установленных версий. HKLM\Software\Microsoft\NETFramework Setup\NDP

Ответ 5

Если вы собираетесь запустить небольшое консольное приложение, вы также можете установить clrver.exe из .NET SDK. Я не думаю, что вы можете стать чище, чем это. Это не мой ответ (но я согласен), я нашел его здесь.

Ответ 6

REM Искать файл CONFIG, если он не выходит, пользователь не имеет .Net framework 2.0 `

SET FileName=%windir%\Microsoft.NET\Framework\v2.0.50727\CONFIG
IF EXIST %FileName% GOTO INSTALL_DIALER
ECHO.You currently do not have the Microsoft(c) .NET Framework 2.0 installed.

Ответ 7

Это работает для меня:

@echo off
SETLOCAL ENABLEEXTENSIONS

echo Verify .Net Framework Version

for /f "delims=" %%I in ('dir /B /A:D %windir%\Microsoft.NET\Framework') do (
    for /f "usebackq tokens=1,3 delims= " %%A in (`reg query "HKLM\SOFTWARE\Microsoft\NET Framework Setup\NDP\%%I" 2^>nul ^| findstr Install`) do (
        if %%A==Install (
            if %%B==0x1 (
                echo %%I
            )
        )
    )
)

echo Do you see version v4.5.2 or greater in the list?

pause

ENDLOCAL 

2^>nul перенаправляет ошибки в пар.

Ответ 8

вы можете проверить установленные компиляторы С# и печатную версию .net:

@echo off

for /r "%SystemRoot%\Microsoft.NET\Framework\" %%# in ("*csc.exe") do (
    set "l="
    for /f "skip=1 tokens=2 delims=k" %%$ in ('"%%# #"') do (
        if not defined l (
            echo Installed: %%$
            set l=%%$
        )
    )
)

echo latest installed .NET %l%

csc.exe не имеет переключателя -version, но он печатает версию .net в своем логотипе. Вы также можете попробовать с msbuild.exe, но .net framework 1. * не имеет msbuild.