Compartir a través de


Resolver ensamblados en tiempo de diseño

Existe la creencia errónea de que agregar una referencia a un ensamblado a través de la pestaña .NET del cuadro de diálogo Agregar referencia es suficiente para hacer referencia a un ensamblado de la memoria caché global de ensamblados (GAC).Esto no es exacto.En realidad, la referencia se hace a un ensamblado de referencia intermedio, es decir, un ensamblado que contiene toda la información de firma y de tipos, pero que no contiene código necesariamente.La pestaña .NET hace una lista de los ensamblados de referencia que corresponden a los ensamblados en tiempo de ejecución en .NET Framework.Además, hace una lista de los ensamblados de referencia que corresponden a los ensamblados en tiempo de ejecución de las carpetas AssemblyFoldersEx que utilizan otros fabricantes.

Compatibilidad con múltiples versiones (multi-targeting)

Visual Studio 2012 permite tener como destino las versiones de .NET Framework que se ejecutan en la versión 2.0 o la versión 4 de Common Language Runtime (CLR).Esto incluye, las versiones 2,0, 3,0 de .NET Framework, 3,5, 4 y 4,5, y las versiones 1,0, 2,0 y 3,0, Silverlight.Si se publica una nueva versión de .NET Framework que está basada en la versión 2.0 o la versión 4 de CLR, Framework se puede instalar utilizando un paquete de destino, que se presentará automáticamente como destino en Visual Studio.

Cómo funciona la resolución de tipos

En tiempo de ejecución, el CLR resuelve los tipos del ensamblado buscando en la GAC, el directorio bin y en cualquiera de las rutas de acceso de sondeo.De esto se ocupa el cargador de ensamblados Fusion.Pero, ¿cómo identifica el cargador lo que está buscando?Esto depende de una resolución hecha en tiempo de diseño, cuando se compila la aplicación.

Durante la compilación, el compilador resuelve los tipos de aplicación utilizando los ensamblados de referencia.En las versiones 2,0, 3,0, 3,5, 4, y 4,5 de .NET Framework, los ensamblados de referencia se instalan cuando se instala .NET Framework.

En la versión 4.5 de .NET Framework, los ensamblados de referencia los proporciona el paquete de destino que se distribuye con la versión correspondiente de .NET Framework SDK.El Framework proporciona solo los ensamblados en tiempo de ejecución.Para compilar aplicaciones, necesita instalar .NET Framework y el SDK correspondiente.

Cuando tiene como destino una versión de .NET Framework concreta, el sistema de compilación resuelve todos los tipos utilizando los ensamblados de referencia del paquete de destino.En tiempo de ejecución, el cargador resuelve estos mismos tipos con los ensamblados en tiempo de ejecución, que se encuentran normalmente en la GAC.

Si los ensamblados de referencia no están disponibles, el sistema de compilación resuelve los tipos utilizando los ensamblados en tiempo de ejecución.Dado que los ensamblados en tiempo de ejecución de la GAC no se distinguen por los números de versión secundaria, es posible que la resolución se lleve a cabo con el ensamblado equivocado.Por ejemplo, esto podría pasar si se hace referencia a un método de .NET Framework nuevo en la versión 3.5 mientras que la versión de destino es la 3.0.La compilación tendrá éxito y la aplicación se ejecutará en la máquina de compilación, pero dará error cuando se implemente en una máquina que no tenga instalada la versión 3.5.

El paquete de destino que ahora se distribuye con .NET Framework SDK incluye una lista de todos los ensamblados en tiempo de ejecución de esa versión de Framework, llamada lista de redistribuciones (redist).Esto hace imposible que el sistema de compilación resuelva los tipos con una versión equivocada del ensamblado.

Vea también

Otros recursos

Conceptos avanzados de MSBuild