Visual Studio 2008 sí le permitió hacer referencia a un ensamblaje A
desde un ensamblaje B
cuando A estaba apuntando .NET 3.5 y B apuntaba a .NET 2.0.Visual Studio 2010: ensamblados de referencia que apuntan a una versión superior de Framework
Visual Studio 2010 ya no permite esto. El tema completo se describe en MSDN:
Se pueden crear aplicaciones que proyectos de referencia o conjuntos diana diferentes versiones de la .NET Framework. Por ejemplo, si crea una aplicación dirigida a .NET Framework 4 Client Profile, ese proyecto puede hacer referencia a un ensamblado que tiene como objetivo .NET Framework versión 2.0. Sin embargo, si crea un proyecto que objetivos de una versión anterior de .NET Framework , no se puede establecer una referencia en ese proyecto para un proyecto o montaje destinado a .NET Framework 4 perfil de cliente o el. NET Framework 4. Para eliminar el error, asegúrese de que el perfil al que se dirige su aplicación es compatible con el perfil al que se dirigen los proyectos o los ensamblados a los que hace referencia su aplicación .
¿Hay alguna manera en la que pueda hacer que VS2010 se comporte como VS2008 en este aspecto (es decir, permitiendo referencias a ensamblados dirigidos a versiones de marco superior)?
Conozco el razonamiento detrás del comportamiento de VS 2010 y las consideraciones de implementación que debo tener en cuenta, no es necesario repetir eso.
El error exacto es:
advertencia MSB3268: La referencia principal "xxx.dll" no se pudo resolver porque tiene una dependencia indirecta en el conjunto marco "System.Core, Versión = 3.5.0.0, Culture = neutral, PublicKeyToken = b77a5c561934e089 "que no se pudo resolver en el marco de destino actualmente . ".NETFramework, Version = v2.0". Para resolver este problema, quite la referencia "xxx.dll" o reorientar su aplicación a una versión marco que contiene "System.Core, Version = 3.5.0.0, Culture = neutral , PublicKeyToken = b77a5c561934e089 ".
No entiendo por qué querrías hacer eso. ¿No requerirá toda la aplicación la versión superior del marco para comenzar? En ese caso, ¿no tiene sentido enfocarse en la versión más alta? – cHao
Es difícil de explicar, pero hay un requisito razonable detrás de eso. –
Requisito razonable: ensamblado de lógica de negocios ("BL") compartido por un sitio 2.0 ASP.NET y una aplicación 3.5 WinForms. El sitio web utiliza Enterprise Library 3.1 anterior y la aplicación WinForms usa EntLib 5.0 más reciente.Al construir para WinForms, BL necesita cambiar las referencias al EntLib más nuevo, que son 3.5, pero BL necesita seguir siendo un proyecto 2.0 para seguir trabajando con el sitio web 2.0 existente. VS2008 permitió que esto sucediera cambiando las configuraciones, pero VS2010 arroja el error anterior porque EntLib 5.0 espera 3.5 referencias (específicamente, System.Core). –