Conceptos de aplicaciones aisladas y ensamblados simultáneos
Una aplicación se considera como aplicación aislada si todos sus componentes son ensamblados en paralelo. Un ensamblado simultáneo es una colección de recursos (un grupo de archivos DLL, clases de ventanas, servidores COM, bibliotecas de tipos o interfaces) que puede usar una aplicación en tiempo de ejecución. Normalmente, un ensamblado simultáneo consta de uno o varios archivos DLL. Por ejemplo, el ensamblado de la biblioteca en tiempo de ejecución de C contiene tres archivos DLL (msvcr90.dll, msvcm90.dll y msvcp90.dll) y lo usan aplicaciones que se generan mediante funciones de la biblioteca CRT.
Compartido o privado
Un ensamblado simultáneo puede ser compartido o privado. Los ensamblados en paralelo compartidos pueden ser utilizados por varias aplicaciones que especifiquen, en sus manifiestos, una dependencia respecto al ensamblado. Aplicaciones diferentes que se ejecuten al mismo tiempo pueden compartir varias versiones de ensamblados en paralelo. Un ensamblado privado es un ensamblado que se implementa con una aplicación y está disponible para el uso exclusivo de esa aplicación. Los ensamblados privados se instalan en la carpeta que contiene el archivo ejecutable de la aplicación o en una de sus subcarpetas.
Manifiestos y orden de búsqueda
Tanto las aplicaciones aisladas como los ensamblados en paralelo se describen mediante manifiestos. Un manifiesto es un documento XML que puede ser un archivo XML externo o incrustado dentro de una aplicación o un ensamblado como un recurso. El archivo de manifiesto de una aplicación aislada se utiliza para administrar los nombres y las versiones de los ensamblados en paralelo compartidos con los que se debe enlazar la aplicación en tiempo de ejecución. El manifiesto de un ensamblado simultáneo especifica los nombres, versiones, recursos y ensamblados dependientes de los ensamblados en paralelo. Para un ensamblado simultáneo compartido, su manifiesto se instala en la carpeta WinSxS\Manifests. En el caso de un ensamblado privado, es recomendable incluir su manifiesto en dicho archivo DLL como un recurso con un identificador igual a 1, y el nombre del ensamblado privado podría ser el mismo que el del archivo DLL. Para obtener más información, vea Ensamblados privados.
En tiempo de ejecución, Windows utiliza la información de ensamblado del manifiesto de la aplicación para buscar y cargar el ensamblado simultáneo correspondiente. Si una aplicación aislada especifica una dependencia de ensamblado, el sistema operativo buscará primero entre los ensamblados compartidos en la carpeta WinSxS. Si no se encuentra el ensamblado necesario, el sistema operativo buscará un ensamblado privado instalado en una carpeta de la estructura de directorios de la aplicación. Para obtener más información, vea Secuencia de búsqueda de ensamblados.
Cambiar las dependencias
Después de haber implementado la aplicación, es posible cambiar las dependencias de un ensamblado simultáneo modificando los Archivos de configuración de editor y los Archivos de configuración de aplicación. Un archivo de configuración de editor, también denominado archivo de directivas de edición, es un archivo XML que redirige aplicaciones y ensamblados globalmente, pasando de usar una versión de un ensamblado simultáneo a otra del mismo ensamblado. Un ejemplo de cuándo se puede utilizar el cambio de dependencias es cuando se implementa una corrección de seguridad o de errores para un ensamblado simultáneo particular y un editor de dicho ensamblado desea redirigir todas las aplicaciones para que usen la nueva versión del ensamblado. Un archivo de configuración de aplicación es un archivo XML que redirige una aplicación específica, pasando de usar una versión de un ensamblado simultáneo a otra del mismo ensamblado. Se puede utilizar para redirigir una aplicación particular y que use una nueva versión de un ensamblado simultáneo diferente a la definida en el archivo de configuración de editor global. Para obtener más información, vea Configuración.
Bibliotecas de Visual C++
Las bibliotecas como ATL, MFC, CRT, OpenMP, MSDIA y estándar de C++ se implementan como ensamblados en paralelo compartidos en caché de ensamblados nativa. De forma predeterminada, todas las aplicaciones compiladas con Visual C++ se compilan con el manifiesto incrustado en el archivo binario final, el cual describe las dependencias de dicho archivo binario sobre las bibliotecas de Visual C++. Para entender la generación de manifiestos para aplicaciones de Visual C++, vea Introducción a la generación de manifiestos para los programas de C/C++
Vea también
Otros recursos
Generar aplicaciones aisladas y ensamblados simultáneos de C/C++