Compartir a través de


Unificación de ensamblados de .NET Framework

En la ejecución simultánea, una aplicación puede estar formada por componentes creados mediante diferentes versiones de .NET Framework. Esto puede crear conflictos entre las dependencias de los componentes. Por ejemplo, supongamos que el componente A de una aplicación se ha creado mediante la versión 1.0 de .NET Framework y necesita utilizar la versión 1.0 del ensamblado System.Data. El componente B de esta aplicación se ha creado mediante la versión 1.1 de .NET Framework y necesita utilizar la versión 1.1 del ensamblado System.Data. Si las versiones de los ensamblados son incompatibles, pero se cargan al mismo tiempo, esto puede generar excepciones de conversión de tipos no deseadas o incluso problemas más serios.

Cómo se determina la versión de .NET Framework que debe utilizar una aplicación

Para solucionar el problema que se genera cuando una aplicación utiliza componentes creados con distintas versiones de .NET Framework, la versión del motor de tiempo de ejecución que se asocia a una aplicación determina qué versión de los ensamblados de .NET Framework se debe utilizar en la aplicación y en todos sus componentes. En el ejemplo anterior, si la aplicación se asocia con la versión 1.1 de .NET Framework, entonces se carga la versión 1.1 del ensamblado System.Data, que comparten todos los componentes utilizados en la aplicación. La referencia del componente A a la versión 1.0 del ensamblado System.Data se promociona en tiempo de ejecución para que haga referencia a la versión 1.1.

Se puede reemplazar este comportamiento si se añaden elementos <bindingRedirect> al archivo Machine.config o Web.config. De este modo, una aplicación puede utilizar una versión actualizada del ensamblado diseñado para reemplazar un ensamblado existente en determinados tipos de aplicaciones. Por ejemplo, si en un futuro se lanza una versión actualizada de System.Web.Service.dll que admite la versión 1.2 de SOAP, puede utilizar esa versión en la aplicación, en vez de utilizar la versión instalada originalmente con el motor de tiempo de ejecución.

Este comportamiento también se puede reemplazar en el archivo de configuración de host ASP.NET (Aspnet.config). ASP.NET utiliza este archivo para garantizar que la versión de System.Web.dll y de System.Web.RegularExpressions.dll coincidan siempre con la versión del motor de tiempo de ejecución asociada a una aplicación, independientemente de los reemplazos realizados en el archivo Web.config.

A veces, es posible utilizar un componente creado mediante una versión posterior de ASP.NET en una aplicación creada con una versión anterior. Recuerde que la versión de la ISAPI de ASP.NET asociada con una aplicación determina siempre la versión del motor de tiempo de ejecución que se utiliza en una aplicación. Si la aplicación se configura para que utilice la versión anterior del motor de tiempo de ejecución, el componente se redirige automáticamente en tiempo de ejecución para que utilice también esa versión. Cuando utilice un componente creado con una versión posterior de .NET Framework en una aplicación creada en una versión anterior, tenga en cuenta lo siguiente:

  • Asegúrese de que el componente no utiliza ninguna característica o no depende de ningún comportamiento específico de una versión posterior de .NET Framework. Estas características pueden no estar disponibles en la versión anterior del motor de tiempo de ejecución.
  • ASP.NET utiliza asignaciones de secuencias de comandos en IIS para enlazar una aplicación a una versión del motor de tiempo de ejecución. Los elementos de configuración <supportedRuntime> y <requiredRuntime> no se pueden utilizar en las aplicaciones ASP.NET.

Por otra parte, si la versión del motor de tiempo de ejecución utilizada para crear el componente está instalada en el equipo, también puede volver a configurar la aplicación para que utilice la versión posterior del motor de tiempo de ejecución. Como las versiones posteriores de .NET Framework han sido diseñadas para ser compatibles con versiones anteriores, la aplicación debe funcionar sin necesidad de realizar modificaciones. Para obtener más información acerca de cómo configurar una aplicación ASP.NET para que utilice una versión específica del motor de tiempo de ejecución, vea Configurar una aplicación ASP.NET para una versión de ASP.NET.

Vea también

Compatibilidad con la ejecución simultánea en ASP.NET | <bindingRedirect>