¿Es posible cargar dos versiones del tiempo de ejecución de .NET en el mismo proceso?

Hay dos escenarios que necesito aclarar:

  1. Un ejecutable compilado con .NET 3.5 necesita usar una biblioteca compilada con .NET 1.1 y la biblioteca debe ejecutarse en el tiempo de ejecución 1.1.

  2. Un ejecutable compilado con .NET 1.1 necesita usar una biblioteca compilada con .NET 3.5.

No puedo encontrar una fuente confiable que indique que no es posible cargar dos versiones del tiempo de ejecución de .NET y la documentación de Microsoft es muy vaga en este sentido.

5

3 Respuestas

No -- you can't load the CLR into the same process twice. See the documentation for CLR Hosting

Al igual que con las versiones anteriores de   tiempo de ejecución, CorBindToRuntimeEx   la función inicializa el tiempo de ejecución. Tú   puede elegir qué versión de   tiempo de ejecución para cargar, pero un proceso puede    alojar solo una versión .

7
agregado
Puede hacerlo si usa la API de alojamiento de .NET 4.0 en lugar de la API de alojamiento de .NET 2.0 ...
agregado el autor Len Holgate, fuente

.NET 4 promete habilitar el alojamiento de diferentes versiones de CLR en el mismo proceso mediante En proceso de lado a lado .

3
agregado

Para el caso n. ° 1, ¿hay alguna razón en particular (por ejemplo, cambios bruscos) que requiera que la biblioteca se aloje en el tiempo de ejecución 1.1? ¿Es posible exponer la biblioteca a través de un servicio web compilado en 1.1 y tener el punto ejecutable en lugar del servicio web? (¿O alguna otra técnica de comunicación remota para obtener la biblioteca en su propio proceso?)

Para el caso # 2, ¿es posible recompilar la aplicación 1.1 en 2.0/3.5, de modo que pueda residir en el mismo proceso?

En cualquier caso, Rob Walker está en lo cierto (y voté a favor): simplemente no puedes alojar 2 versiones del tiempo de ejecución en el mismo proceso. Entonces necesitas trabajar alrededor de alguna manera. Me imagino que en ambos casos, la fuente debe estar disponible, por lo que deberían reproducirse las recompilaciones y las nuevas pruebas.

2
agregado
John, tienes razón, tendremos que solucionarlo, ya que cambiar el código no es deseable. Solo quería estar seguro de que no estábamos pasando por alto una solución más simple.
agregado el autor CodeForNothing, fuente