2011-11-09 14 views
8

He preguntado this question yesterday - fue cerrado como "duplicado exacto" por algunas personas que no se tomaron el tiempo para leer preguntas/comentarios con cuidado. Por lo tanto, otra prueba - tal vez se obtenga el tiempo para recibir una respuesta de trabajo antes de ser cerrada nuevamente por alguna razón sin sentido.¿Cómo puedo saber si está instalado .NET 4.02?

Microsoft ha lanzado recientemente algunas "actualizaciones" para .NET Framework. Lamentablemente, no conozco ninguna forma de averiguar qué versión está instalada. Framework-Version permanece en 4.0.30319.239.

Gracias por algunos Enlightement ;-)

PS: Configuración supportedRuntime en app.config a la Versión 4.0.2 = hace que la aplicación dime que en el arranque 4.0.2 no está instalado (en ningún momento - por lo que hay debe ser un lugar donde se pueda encontrar la versión "real").

+2

¿Cuál es la razón por la que desea detectarlo? –

+0

@HansPassant: ¿Alguna vez ha experimentado que incluso cuando se codifica contra 4.0.0.0.0, se producen cambios en el comportamiento simplemente porque 4.0.2 EXISTE? ¿Y por qué importa POR QUÉ quiere saber? Realmente quiero saber POR QUÉ el sistema sabe que "4.0.2" está instalado y cuál es el concepto detrás de esta mierda al introducir docenas de frameworks 4.0. – springy76

+0

¿Por qué la gente vota esto cuando ayer hizo una pregunta idéntica y se cerró como duplicado? – slugster

Respuesta

13

Tenga una mirada en:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v4.0.30319\SKUs 

Si ha instalado 4.0.2 entonces existen estos nodos adicionales:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v4.0.30319\SKUs\.NETFramework,Version=v4.0.1 
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v4.0.30319\SKUs\.NETFramework,Version=v4.0.1,Profile=Client 
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v4.0.30319\SKUs\.NETFramework,Version=v4.0.2 
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v4.0.30319\SKUs\.NETFramework,Version=v4.0.2,Profile=Client 
+0

¿Qué valor/clave debe contener cuando se instala 4.0.2? – Sascha

+0

@Sascha ver revisó respuesta – springy76

+0

bien, en mi máquina, es sólo HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ .NETFramework \ v4.0.30319 \ SKU \ .NETFramework, versión = v4.0 HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ .NETFramework \ v4 .0.30319 \ SKUs \ .NETFramework, Version = v4.0, Profile = Client – Sascha

1

Esto no debería marcar la diferencia. No se dirige a números de construcción específicos del marco, se dirige al número de versión, que en este caso es 4.0. ¿Qué estás haciendo donde necesitas saber el número de compilación exacto?

WTF - por qué utilizar buildcounters ?!

¿Por qué no? Detalla la versión exacta del marco. Normalmente no se lanza software con una ronda "esta es la versión 1.0.0.0" porque puede causar estragos en el control de versiones para actualizaciones/revisiones, etc.

La simple orientación a .NET 4.0 debería ser suficiente.

+3

¿Has pensado alguna vez que un desarrollador podría querer saber por qué su máquina de desarrollo actúa de forma diferente a cualquier otra máquina de la empresa? ¿Y que esto solo sucede porque tiene 4.0.2 instalado que no se ve en ninguna parte pero cambia el comportamiento de los programas que apuntan explícitamente a 4.0.0? – springy76

+1

Esta pregunta grazna como la clásica pregunta XY. La pregunta pregunta sobre el problema Y para tratar de resolver X. Lo cual es fácil de resolver pero nadie sabe X. La persistencia tenaz del OP solo al hablar sobre Y no lo ayuda a obtener la respuesta que necesita. E insistir en que los que responden intentan adivinar X no tiene sentido. –

+1

@HansPassant sería bueno si usted dedicara más esfuerzos a responder la pregunta que escribir comentarios inútiles con su opinión personal que nadie ha pedido. – Sascha

1

Vamos a darle una oportunidad:

Si conoces a una función/método especial dentro de una clase que sólo está presente en .NET 4.02 pero no en .NET 4.0, me gustaría utilizar la reflexión para, por ejemplo, get a list of all methods of a class o la firma de un método específico.

Si solo hay cambios internos (métodos/propiedades), puede usar ILSpy para buscar dichos cambios y luego utilizar de nuevo la reflexión para verificar los cambios.

Por otro lado, no estoy seguro de si algunas restricciones de seguridad pueden dificultarle reflexionar.

Cuestiones relacionadas