2012-01-10 28 views

Respuesta

28

Sí, .NET 4.5 tiene una nueva versión del CLR, puede leer sobre las mejoras en;

http://blogs.microsoft.co.il/blogs/sasha/archive/2011/09/17/improvements-in-the-clr-core-in-net-framework-4-5.aspx

Para aclarar; esta es una nueva versión de CLR que en realidad reemplaza por la 4.0, por lo que es discutible si se llama una actualización o una nueva CLR.

Para saber qué versión de CLR se está ejecutando bajo, utilice

System.Runtime.InteropServices.RuntimeEnvironment.GetSystemVersion() 
+2

¿Qué quiere decir con 'nuevo' ? En cierto sentido, cada cambio en el CLR se puede ver como 'un nuevo CLR'. Sin embargo, .NET 4.5 ciertamente no es un lanzamiento lado a lado. Reemplazará a .NET 4.0. En ese sentido, la respuesta de Hans Passant es correcta. – Steven

+0

Sí, supongo que podría verlo de ambas maneras, 4.5 requiere un CLR actualizado, si lo ve como nuevo o no es un tema de discusión. –

+0

La pregunta es ambigua. Es por eso que tanto su respuesta como la de Hans son correctas, mientras usted dice exactamente lo contrario :-) – Steven

16

No, todavía es la versión 4.0.30319. La nueva revisión de clr.dll y sus amigos reemplazará las existentes en su máquina. Mismo esquema que el utilizado en .NET 3.0, 3.5 y 3.5SP1. La comprobación para ver si 4.5 está instalado requiere el mismo enfoque que esas versiones, check the registry.

+0

¿Dónde están los archivos que uno consideraría como 'el CLR'? –

+0

Están en C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319 –

+0

No creo que podamos considerar esa carpeta 'la CLR' ¿no? –

14

Sí. El version of the CLR changes de 4.0.30319.269 a 4.0.30319.17379. Por lo tanto, el CLR es nuevo, pero es compatible con versiones anteriores de .NET 4.0 CLR. No debería necesitar volver a compilar ningún código escrito y compilado por .NET v4.0.

Desde la página .NET Framework Versions and Dependencies en MSDN:

El .NET Framework 4.5 RC es una actualización en el lugar que reemplaza el .NET Framework 4 en su ordenador. Después de instalar esta actualización, las aplicaciones de .NET Framework 4 deben continuar ejecutándose sin necesidad de volver a compilarlas. Sin embargo, algunos cambios en .NET Framework pueden requerir cambios en el código de tu aplicación.

Además, desde el .NET Framework blog:

.NET Framework 4.5 es una actualización en el lugar que reemplaza (una instalación de lado a lado en vez de) .NET Framework 4. Nuestro objetivo es que .NET 4.5 para ser totalmente compatible con aplicaciones creadas para .NET 4

Hay algunos cambios que son no compatible con versiones anteriores. Consulte la página Application Compatibility in the .NET Framework 4.5 RC en MSDN.

La orientación oficial de Microsoft, y una buena práctica de codificación, no es detectar versiones específicas del CLR. Por el contrario, debe detectar si ciertas características están presentes. En lugar de

public static bool IsDotNet45() 
{ 
    return Environment.Version.Major == 4 && 
      Environment.Version.Revision > 17000; 
} 

hacer algo como:

public static bool SupportsReflectionContext() 
{ 
    // Class "ReflectionContext" exists from .NET 4.5 onwards. 
    return Type.GetType("System.Reflection.ReflectionContext", false) != null; 
} 
0

.NET Framework 4.5 es como un paquete de servicios de .NET Framework 4 con algunas características adicionales.

+1

Parece una forma un poco extraña de describirlo. Supongo que es cierto en cierto modo como una analogía, pero no sé si realmente responde a la pregunta: ¿hay un nuevo CLR? –

+0

No veo ningún problema con este comentario. CLR 4.5 en realidad reemplaza CLR 4 por lo que debe considerarse y actualizarse. – Yogee

2

Aunque dudo que esto estuviera disponible en su formato actual en el momento de la pregunta, aquí está el CLR Guide en MSDN donde muestra todas las versiones de Framework y la versión CLR que incluyen. Lo encontré muy útil, así que pensé que lo compartiría.

Junto a .NET 4.5 afirma que incluye CLR 4.

0

Scott Hanselman tiene una publicación en su blog que aborda esta cuestión. Puede encontrar información sobre él aquí:

http://www.hanselman.com/blog/NETVersioningAndMultiTargetingNET45IsAnInplaceUpgradeToNET40.aspx

El corto de él es que hay cambios a la CLR que mejoran el rendimiento y añaden nuevas bibliotecas. El CLR utilizado por .NET 4.5 es compatible con .NET 4. Se considera una actualización menor. Estas actualizaciones menores son lo que Microsoft llama una actualización in situ.

Cuestiones relacionadas