2012-03-29 14 views
5

Si tengo una biblioteca que está compilada en .NET 4 y la referencia desde un ejecutable .net 4.5 qué versión del marco funcionarán las operaciones definidas en la biblioteca?¿Qué versión de .NET Framework ejecutará una biblioteca en

Tengo una aplicación cli que está construida en .NET 4.5 y hace referencia a los proyectos .net 4 y .net 4.5 y me pregunto si ambos usarán la misma versión de los componentes de ADO.net.

Respuesta

5

Ambos se ejecutarán en el mismo CLR (4.5 en este caso).

Con .NET < = 3.5, podría haber casos en los que se cargarán varias versiones del mismo ensamblaje (por lo que podría suceder que ADO.NET cargue la versión 4.0 y también cargue 4.5 en el mismo dominio de la aplicación). Por lo que yo sé, eliminaron eso con CLR 4.0 (o al menos hicieron que ocurriera mucho menos).

Edit: BTW - hay una diferencia entre el CLR (el tiempo de ejecución que ejecuta su código) y las versiones de los ensamblados que se están cargando.

La versión del CLR rige las capacidades del proceso, qué puede hacer, qué versiones de ensamblajes puede cargar. Por ejemplo, CLR 4.5 puede cargar prácticamente todos los ensamblajes (1.0 -> 4.5). Todos correrán bajo el 4.5 CLR. Además de eso, no puede ejecutar dos versiones del CLR desde la misma banda de compatibilidad en el mismo proceso. CLR 4.5 y 4.0 ambos se consideran la misma banda de compatibilidad, por lo que uno o el otro se cargarán. CLR 1.0, 1.1, 2.0, 3.0 y 3.5 se consideran en la misma banda de compatibilidad, por lo que solo uno de ellos puede cargar. Sin embargo, puede cargar CLR 3.5 y CLR 4.5 al mismo tiempo.

+0

Pensé que si hacía referencia a un ensamblado que apuntaba a un marco diferente, se producían errores de compilación. –

+1

Solo si hay una interrupción binaria (que son pocas y distantes entre sí) o si está tratando de hacer referencia a un ensamblado que apunte a una versión CLR más avanzada (por lo tanto, un ensamblado 2.0 que hace referencia a un ensamblado 4.0 se romperá. Lo contrario no) –

+0

I Creo que también se romperá si especifica una versión diferente del conjunto. Por ejemplo, tiene assembly build en 4.0 y ha especificado en web.config (o desde donde se carga) 3.5 – Thea

Cuestiones relacionadas