Esta pregunta no está tanto relacionada con la programación como con la implementación.
Me encuentro conversando mucho con el grupo de mi empresa cuyo trabajo es mantener nuestros servidores de producción de Windows e implementar nuestro código en ellos. Por razones legales y de cumplimiento, no tengo visibilidad directa ni control alguno sobre los servidores, por lo que la única forma de saber qué versiones de .NET están instaladas en cualquiera de ellos es a través de las instrucciones que le doy a ese grupo.
Hasta ahora, todos los métodos que se me ocurren para saber qué versión (s) están instaladas (verifique que las Herramientas administrativas coincidan con 1.1 o 2.0, verifique las entradas en la lista "Agregar o quitar programas", verifique la existencia del directorios en c: \ Windows \ Microsoft.NET) tienen fallas (he visto al menos una máquina con 2.0 pero no 2.0 entradas en Herramientas administrativas, y ese método no le dice nada sobre 3.0+, la lista "Agregar o quitar programas" puede perder la sincronización con la realidad, y la existencia de los directorios no significa necesariamente nada).
Dado que generalmente necesito saber que estas cosas están en su lugar de antemano (descubrir que "uy, este no tiene todas las versiones y paquetes de servicio que necesita" realmente no funciona bien con períodos de mantenimiento cortos) y tengo que Hacer la verificación "por proxy" ya que no puedo acceder a los servidores directamente, ¿cuál es la manera infalible de saber qué versión (s) de .NET están instaladas en un servidor Windows de producción? Preferiblemente, alguna forma intrínseca de hacerlo utilizando lo que instala el marco, ya que será más rápido y no necesitará ningún tipo de utilidad para cargarse y también un método que definitivamente fallará si los marcos no están instalados correctamente pero aún tienen archivos en su lugar (es decir, , hay un directorio y gacutil.exe está insertado allí, pero esa versión del marco no está realmente "instalada")
EDITAR: En ausencia de una buena forma intrínseca infalible de hacer esto incorporada en el marco (s), ¿alguien conoce un programa bueno, liviano y que no requiere instalación que pueda descubrir esto? Me imagino que alguien podría escribir uno fácilmente, pero si ya existe, sería aún mejor.
fuente
Respuestas:
Debe abrir IE en el servidor para el que está buscando esta información e ir a este sitio: http://www.hanselman.com/smallestdotnet/
Eso es todo lo que se necesita.
El sitio tiene una secuencia de comandos que busca el "UserAgent" de su navegador y determina qué versión (si existe) de .NET Framework tiene (o no) instalada, y la muestra automáticamente (luego calcula el tamaño total si lo eligió para descargar .NET Framework).
fuente
Puede verificar mediante programación el registro y algunas otras cosas según esta entrada de blog .
La clave de registro para mirar es
fuente
Respuesta encontrada desde aquí :
Abra el símbolo del sistema y copie y pegue una de las siguientes líneas de comando
o
fuente
Según la respuesta de CodeTrawler , la solución es ingresar lo siguiente en una ventana del explorador:
Luego busque:
... y haga clic con el botón derecho / vaya a la pestaña de versión para cada resultado.
fuente
La forma de Microsoft es la siguiente:
MSDN: Cómo determinar qué versiones de .NET Framework están instaladas (que lo dirige a la siguiente clave de registro:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\...
)Si quieres infalible eso es otra cosa. No me preocuparía por una copia de la carpeta del marco. Si alguien hiciera eso, consideraría que la computadora está rota.
La forma más infalible sería escribir un pequeño programa que use cada versión de .NET y las bibliotecas que le interesan y ejecutarlas.
Para un método sin instalación, PowerBasic es una herramienta excelente. Crea pequeños ejecutables que no requieren tiempo de ejecución. Podría automatizar las comprobaciones descritas en el artículo de MS KB anterior.
fuente
http://www.asoft.be/prod_netver.html
Utilice este "programa bueno, ligero y que no requiere instalación"
fuente
Si la máquina que desea verificar tiene .NET SDK instalado, puede usar un símbolo del sistema del SDK y ejecutar el programa
CLRVer.exe
.fuente
La respuesta oficial de Microsoft sobre cómo hacer esto se encuentra en el artículo 318785 de KB .
fuente
La implementación de OneTouch hará toda la detección e instalación de los requisitos previos. Probablemente sea mejor optar por una solución prefabricada que intentar hacer la tuya propia. Tratar de rodar el suyo propio puede generar problemas porque cualquier cosa que ingrese puede cambiar con una revisión o paquete de servicio. Es probable que Microsoft tenga alguna heurística para determinar qué versión se está ejecutando.
fuente
La forma oficial de detectar .NET 3.0 se describe aquí
http://msdn.microsoft.com/en-us/library/aa480198.aspx
Defectuoso, porque requiere que la persona que llama tenga permisos de acceso al registro.
MSDN también menciona una técnica para detectar .NET 3.5 comprobando la cadena del agente de usuario:
http://msdn.microsoft.com/en-us/library/bb909885.aspx
Creo que Microsoft debería haber hecho un mejor trabajo que este.
fuente
Además, consulte la pregunta de Stack Overflow ¿ Cómo detectar qué versiones de .NET Framework y service packs están instalados? que también menciona:
Id. De artículo: 318785 - Última revisión: 7 de noviembre de 2008 - Versión: 20.1 Cómo determinar qué versiones de .NET Framework están instaladas y si se han aplicado Service Packs.
Desafortunadamente, no parece funcionar, porque la
mscorlib.dll
versión en el directorio 2.0 tiene una versión 2.0, y no hay ningunamscorlib.dll
versión en los directorios 3.0 o 3.5 a pesar de que 3.5 SP1 está instalado ... ¿Por qué la respuesta oficial de Microsoft sería tan mal informado?fuente
Para determinar el soporte de su servidor para .NET Framework 4.5 y versiones posteriores (probado a través de 4.5.2): Si no tiene acceso al Registro en el servidor , pero tiene derechos de publicación de aplicaciones en ese servidor, cree una aplicación MVC 5 con un trivial controlador, así:
Luego, en su Web.config, recorra las versiones de .NET Framework deseadas en la siguiente sección, cambiando los
targetFramework
valores como desee:Publique cada destino en su servidor, luego busque
<app deploy URL>/Default
. Si su servidor es compatible con el marco de destino, entonces la cadena simple se mostrará desde su controlador trivial. De lo contrario, recibirá un error como el siguiente:Entonces, en este caso, mi servidor de destino aún no es compatible con .NET Framework 4.5.2.
fuente
Para obtener la versión de dotnet instalada, cree
una aplicación de consola. Agregar esta clase Ejecutar eso
fuente
Curiosamente, escribí un código para hacer esto cuando salió 1.1 (¿qué era eso, hace siete años?) Y lo modifiqué un poco cuando salió 2.0. No lo he mirado en años porque ya no administramos nuestros servidores.
No es infalible, pero lo estoy publicando de todos modos porque lo encuentro gracioso; ya que es más fácil de hacer en .NET y aún más fácil en Power Shell.
fuente
Bueno, como dijo Dean, puedes mirar el registro y hacer lo que él hizo. Para comprobar si realmente tiene CLR .NET Framework instalado, debe buscar el
MSCorEE.dll
archivo en el%SystemRoot%\System32
directorio.fuente
Probablemente sea una forma desagradable de averiguar versiones, pero siempre tuve la impresión de que todas las versiones se instalaron
<root>:\WINDOWS\Microsoft.NET\Framework
.Esto proporciona carpetas con nombres
v2.0.50727
que creo que dan información detallada sobre la versión.fuente
Si desea encontrar versiones anteriores a .NET 4.5, use el código para una aplicación de consola. Me gusta esto:
De lo contrario, puede encontrar .NET 4.5 o posterior consultando de esta manera:
Luego, el resultado de la consola le dirá qué versiones están instaladas y disponibles para usar con sus implementaciones. Este código también es útil porque los tiene como soluciones guardadas para cuando quiera verificarlo en el futuro.
fuente
Entré en Windows Update y miré el historial de actualizaciones, sabiendo que el parche del servidor se mantiene actualizado. Busqué actualizaciones de .NET y me mostró exactamente qué versiones habían tenido actualizaciones, lo que me permitió concluir qué versiones estaban instaladas.
fuente
Encontré este bastante útil. aquí está la fuente
fuente