2012-09-27 23 views
12

Suponiendo que el sistema tiene instalados .NET 4.0 y .NET 4.5.Cargando un ensamblado para .NET 4.5 en un dominio de aplicación .NET 4.0

¿Es posible cargar y trabajar con un ensamblado .NET 4.5 desde un ensamblado escrito con targeting .NET 4.0?

En pocas palabras, ¿puedo llamar a Assembly.Load desde el código .NET 4.0 para cargar un ensamblado de orientación .NET 4.5?

+2

Querrá leer esto: http://marcgravell.blogspot.nl/2012/09/iterator-blocks-missing-methods-and-net.html too !! – sehe

+0

¿por qué no ajustar la configuración de compilación en sus otros proyectos para usar .NET4.5? –

+1

@ShaunWilde A veces eso no es posible. Puede tener múltiples equipos o aplicaciones en una empresa, uno que tenga .NET 4.5 y otro que use .NET 4.0. En un mundo ideal, esto no sucede, pero en el mundo real, a menudo sí. Algunas veces necesita interoperar componentes entre los dos. – Nuzzolilo

Respuesta

11

Suponiendo un sistema como .NET 4.0 y .NET 4.5:

como se indica en marcgravell's blog unidos por sehe

4,5 es un en-lugar over-the-top instalar en la parte superior de 4,0, en el GAC; una vez que haya instalado 4.5, 4.0 se ejecuta con los 4,5 asambleas

Entonces llamando Assembly.Load de un código de .NET 4.0 focalización (compilado por un compilador 4.0), en realidad se ejecutará en el uso de la aplicación 4.5 marco, por lo que no veo ninguna razón por la cual no podría cargar un ensamble 4.5.

margravell observa que se producen problemas cuando intenta ejecutar el código compilado .NET 4.5 en un sistema con solo 4.0 instalado, ya que la implementación de los iteradores de rendimiento/corte produce una referencia de método faltante. Pero esto no debería afectarte.

+4

Entonces, ¿Cómo es que no funciona por defecto? - ¿Qué cosa adicional tienes que hacer para que funcione? – BrainSlugs83

+0

Aparentemente .net-4.5 intenta comportarse como .net-4.0 en algunos casos también cuando se hace esto. Por ejemplo, 'System.ComponentModel.Composition' se niega a cerrar los tipos genéricos abiertos cuando se carga con un ensamblado .net-4.5 cargado por un programa inicializado como .net-4.0. Esto me mordió porque no me di cuenta de que el framework se estaba ejecutando en modo .net-4.0 y no podía adivinar que esta podría ser la causa de un comportamiento diferente. – binki

Cuestiones relacionadas