Apoyado en tiempo de ejecución v4.0 en la aplicación.config después de actualizar VS11 Beta para VS2012 RC

StackOverflow https://stackoverflow.com//questions/11710195

Pregunta

Después de la actualización de VS11 Beta para VS2012 RC - he modificado a partir de la focalización .NET 4.0 .NET 4.5.Me doy cuenta en la aplicación.config siguiente sección

<startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
</startup>

¿Cuál es la de arriba para que?

Cuando traté de crear un nuevo proyecto (no actualización de proyecto existente) desde dentro de VS2012 RC no veo la sección anterior en la aplicación.config

¿Fue útil?

Solución

Eso es un efecto secundario de la eterna .RED de control de versiones atolladero..NET 4.5 no es un side-by-side versión de el .NET framework, reemplaza completamente a una .NET 4.0 de instalar.Mucho como 3.0 y 3.5 sustituyó a una .NET 2.0 instalar.

El 3.0 y 3.5 actualizaciones fueron bastante leves, el marco que se acaba de adquirir un montón de nuevas asambleas.El CLR y el núcleo de la clase base asambleas no cambiar.Mucho.

El clr.dll archivo que se incluye con la versión 4.5 del marco de trabajo que aún tiene el 4.0.30319 número de versión.El mismo número de versión de la versión 4.0 de la CLR.Y no tiene problemas en la ejecución .NET de aplicaciones dirigidas a el .NET framework 4.0.

Esa versión de marco, sin embargo, fue muy modificada internamente.Se adquirió el lenguaje de proyección que permite la escritura de Metro de aplicaciones que se ejecutan en Windows 8 en un lenguaje administrado.Pesado cambios incluyen el cambio de clases de una asamblea a otra, lo que permite el despliegue en un teléfono o tableta a ser modesto.El app.exe.archivo de configuración agregado a su proyecto se asegura de que el usuario tenga que versión requerida.La implementación de la .archivo de configuración es opcional, pero el usuario verá un muy opaco mensaje de excepción, cuando lo único que tiene .NET 4.0 instalado.No realmente seguro de lo que parece.La instalación automática que se activa cuando él no tiene 4.5 probablemente también no funciona.

Otros consejos

Mientras que Hans Passant es correcto en todo lo que dice, pierde un punto clave, que es el papel del encabezado de PE en esta debacle.

Debido a que DotNet 4.5 es una instalación en el lugar en la parte superior de DOTNET 4.0, y debido a que no actualiza el número de versión DOTNET, el resultado es que los binarios construidos con DOTNET 4.5 tienen el número de versión DOTNET 4.0 anterior en su binario Encabezado PE (4.0.30319).

Debido a que el CLR utiliza este valor en el encabezado de PE para determinar qué versión de la marco de DOTNET para cargar, y debido a que este valor no cambia para ensamblajes construidos contra DOTNET 4.5, luego, en ausencia de información adicional, el CLR tiene No hay forma de saber si un conjunto con 4.0.30319 en el encabezado PE requiere enlazar a DotNet 4.0 o 4.5.

Es la presencia del elemento SupportEdRuntime en App.Config que proporciona esta información adicional al CLR. Por lo tanto, si inicia una aplicación DOTNET 4.5 con la entrada de soportamiento actual presente en un sistema que solo tiene instalado DotNet 4.0, entonces el CLR emitirá un mensaje útil que le informará que no tiene la versión requerida de DOTNET instalada. Considerando que si inicia la misma aplicación DOTNET 4.5 sin la entrada de soportamiento en un sistema que solo tiene instalado DotNet 4.0, entonces la aplicación puede comenzar a ejecutarse, pero luego se bloquea cuando finalmente intenta usar un DOTNET 4.5 característica.

Mientras que los proyectos construidos con VS2012 RC y la orientación DOTNET 4.5 podrían haber tenido la entrada de soportamiento que faltan, los proyectos construidos con VS2012 RTM tienen la entrada.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top