versión versiones una ultima supportedruntime superior reinstalar pudo posterior plataforma net misma microsoft intente instalado instalada instala inicializar framework está este equipo diferencias cual actualización .net-2.0 .net-4.0 clr

versiones - Cuando se vincula un ensamblado administrado.NET 2.0 desde una aplicación.NET 4.0, ¿qué marco se usa?



supportedruntime (3)

Si tengo un ensamblaje de CLR 2.0 (código administrado puro, sin problemas de modo mixto) al que debo enlazar desde una aplicación de CLR 4.0, ¿se ejecuta el código 2.0 en el CLR 2.0 o 4.0?

Básicamente, ¿existe algún riesgo de que 4.0 cambios de ruptura afecten al código 2.0?


Básicamente, ¿existe algún riesgo de que 4.0 cambios de ruptura afecten al código 2.0?

No A partir de .NET 4, ¡no tiene que preocuparse en absoluto por los problemas de compatibilidad ! La versión 4 introdujo una nueva característica llamada "Ejecución lado a lado en proceso" , que esencialmente le permite cargar varias versiones de CLR en el mismo proceso.

En otras palabras, dado que su aplicación principal se está ejecutando en el tiempo de ejecución 4.0, puede indicarle que cargue el tiempo de ejecución 2.0 cuando cargue el ensamblaje CLR 2.0. El conjunto 2.0 CLR utilizará el tiempo de ejecución 2.0, mientras que su aplicación continuará utilizando el tiempo de ejecución 4.0.

¿Cómo se especifica esto? Creo que solo puede agregar un archivo de configuración para su ensamblaje de CLR 2.0 (por ejemplo, "My.dll.config" en el mismo directorio que "My.dll"), pero no lo he probado con DLL. Sin embargo, esto es lo que pones en el archivo de configuración de tu ensamblaje:

<?xml version="1.0"?> <configuration> <startup> <supportedRuntime version="v2.0.50727" /> </startup> </configuration>


La respuesta anterior es incorrecta. Usted se pone al lado de los marcos completos. Una APLICACIÓN .NET 2 (nota que significa EXE, no biblioteca) no se promocionará automáticamente a .Net 4.

Pero si una aplicación .Net 4 carga un ensamblaje .Net 2, se carga en el mismo tiempo de ejecución (de lo contrario, ¿cómo podrían compartir información)? El ensamblaje .Net 2 se carga en el tiempo de ejecución de .net 4 utilizando un modo de compatibilidad que se supone que minimiza la ruptura de los cambios (principalmente para los cambios de seguridad en .Net 4).

Un ensamblaje .Net 2 no puede hacer referencia a un ensamblado .Net 4 porque no tendría características.

La ÚNICA excepción a esta que conozco es si carga un ensamblaje .Net desde una aplicación C ++. La aplicación C ++ puede cargar y alojar dos tiempos de ejecución. Podría tener un ensamblaje .Net 2 y un ensamblado .Net 4 cargados, pero no podrían hablar entre ellos directamente. Así es como funcionan los procesos de CLR en SQL Server. Puede tener un .Net 2 CLR Proc y un .Net 4 CLR Proc que no se comunican, pero ambos están cargados en el servidor.

Recientemente se publicó un gran artículo en la revista MSDN sobre el alojamiento de .Net framework, pero no lo puedo encontrar ahora. Tal vez alguien más puede publicar el enlace.

Por lo tanto, debería poder cargar casi cualquier ensamblaje .Net 2 en un ejecutable .Net 4 sin muchos problemas. Los únicos problemas que he visto son con los permisos de seguridad.