2010-04-15 15 views
24

¿Existen barreras de compatibilidad con un código de llamada de ensamblado de .NET 4.0 en un ensamblado .NET 2.0? ¿Y viceversa?¿Puede el código .NET 4.0 interoperar con el código .NET 2.0?

Más específicamente, estoy investigando una actualización a Visual Studio 2010 cuando utilizo una aplicación de terceros basada en .NET 2.0. La aplicación es extensible por ganchos que hacen referencia a mi código personalizado. Y viceversa, mi código hará referencia a los ensamblajes de la aplicación.

+1

Eche un vistazo a [esta pregunta] (http://stackoverflow.com/questions/1456785/a-finder-guide-to-api-breaking-changes-in-net). –

Respuesta

38

El CLR, en .NET 4, puede consumir ensamblados .NET 2 y usarlos correctamente.

Si desea que su aplicación .NET 2 pueda cargar ensamblados .NET 4, deberá configurarlo de manera diferente. Al establecer el tiempo de ejecución requerido para .NET 4 y la política de carga heredada, debe poder forzar la carga de la aplicación .NET 2 mediante CLR 4, lo que le permitiría usar sus ensamblados .NET 4.

instalación de su archivo app.config para incluir:

<?xml version="1.0"?> 
<configuration> 
    <startup useLegacyV2RuntimeActivationPolicy="true"> 
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/> 
    </startup> 
</configuration> 

Dicho esto, en una situación como esta, me gustaría recomendar simplemente utilizando VS 2010 y .NET 3.5 que apuntan en lugar de .NET 4. Este compilaría sus ensamblajes para CLR 2 y evitaría este problema por completo.

+0

Esto asume, por supuesto, que cualquier servidor en el que esté ejecutando su aplicación .NET 2.0 también tiene instalado .NET 4.0. – cortijon

+2

@MrGrumbe: Creo que es una suposición segura teniendo en cuenta la pregunta del OP. –

-3

. Los ensamblados de .NET 4.0 pueden llamar a los ensamblados de .NET 2.0 sin dificultad. Sin embargo, es muy poco probable que pueda llamar a un ensamblado de .NET 4.0 desde .NET 2.0 a menos que el ensamblado de .NET 4.0 no aproveche las nuevas funciones de marco y configure las redirecciones de ensamblaje.

+0

... está recibiendo una advertencia en vs si está intentando hacer esto y puede provocar un comportamiento inesperado. – Beachwalker