Digamos que tengo dos proyectos, P4 y P3, dirigidos a .NET 4.0 y 3.5 respectivamente.¿Puede mi aplicación .Net hacer referencia a dos versiones diferentes de una biblioteca de .NET Framework?
Cada proyecto también tiene una referencia a System.Data. En el caso de P4, será a System.Data v4.0.0.0 En el caso de P3, será a System.Data v2.0.0.0
P4 proyecto también hace referencia a P3.
Si P4 se carga y se ejecuta, utiliza .NET 4.0 CLR. En tiempo de ejecución, las referencias a System.Data parecen resolverse a v4.0 dentro de P4 y P3. Puedo anular esto mediante el uso de redireccionamientos de unión de conjunto, pero luego tanto P4 como P3 se resuelven a v2.0.
¿Hay alguna manera de configurar mi aplicación para que P4 use v4.0 y P3 use v2.0?
He intentado esto, pero sin suerte. P3 todavía ejecuta v4.0. ¿Sabes si esta configuración tendría algún efecto visible en el conjunto generado para P3? P.ej. El manifiesto dice ".ver 2: 0: 0: 0" si "Versión específica" se establece en verdadero o no. – Rob
Sí, eso es lo que hice siguiendo el consejo de Seb. También necesitaba especificar useLegacyV2RuntimeActivationPolicy = "true" como un atributo en la etiqueta de inicio. De lo contrario, se bloqueó con Excepción no controlada: System.BadImageFormatException – Rob
Impresionante. Su enlace fue lo que me recordó sobre la configuración, así que definitivamente acepte su respuesta. – Randolpho