Concepts d'applications isolées et d'assemblys côte à côte

Une application est considérée comme une application isolée si tous ses composants sont des assemblys côte à côte. Un assembly côte à côte est une collection de ressources (un groupe de DLL, de classes de fenêtres, de serveurs COM, de bibliothèques de types ou d'interfaces) disponibles, qu'une application peut utiliser au moment de l'exécution. En général, un assembly côte à côte est composé d'une ou de plusieurs DLL. Par exemple, l'assembly de la bibliothèque Runtime C contient trois DLL (msvcr90.dll, msvcm90.dll et msvcp90.dll) et est utilisé par les applications lorsqu'elles sont construites à l'aide de fonctions de la bibliothèque CRT.

Partagé ou privé

Un assembly côte à côte peut ou être partagé ou privé. Les assemblys côte à côte partagés peuvent être utilisés par plusieurs applications qui spécifient, dans leur manifeste, une dépendance vis-à-vis de ces derniers. Plusieurs versions d'assemblys côte à côte peuvent être partagées par différentes applications qui s'exécutent en même temps. Un assembly privé est un assembly déployé avec une application et réservé à l'usage exclusif de cette dernière. Les assemblys privés sont installés dans le dossier qui contient le fichier exécutable de l'application ou l'un de ses sous-dossiers.

Manifestes et ordre de recherche

Les applications isolées et les assemblys côte à côte sont décrits par des manifestes. Un manifeste est un document XML qui peut être un fichier XML externe ou incorporé dans une application ou un assembly en tant que ressource. Le fichier manifeste d'une application isolée sert à gérer les noms et les versions des assemblys partagés côte à côte auxquels l'application doit se lier au moment de l'exécution. Le manifeste d'un assembly côte à côte spécifie les noms, les versions, les ressources et les assemblys dépendants d'assemblys côte à côte. Dans le cas d'un assembly partagé côte à côte, le manifeste est installé dans le dossier WinSxS\Manifests. Dans le cas d'un assembly privé, il est recommandé d'inclure le manifeste dans la DLL en tant que ressource avec un ID égal à 1. Le nom de l'assembly privé peut être le même que celui de la DLL. Pour plus d'informations, consultez Assemblys privés.

Au moment de l'exécution, Windows utilise les informations d'assembly provenant du manifeste d'application pour rechercher et charger l'assembly côte à côte correspondant. Si une application isolée spécifie une dépendance d'assembly, le système d'exploitation recherche d'abord l'assembly parmi les assemblys partagés contenus dans le dossier WinSxS. Si l'assembly requis n'y figure pas, le système d'exploitation recherche un assembly privé installé dans un dossier de la structure de répertoire de l'application. Pour plus d'informations, consultez Séquence de recherche d'assemblys.

Modification des dépendances

Il est possible de modifier des dépendances d'assemblys côte à côte après qu'une application a été déployée en modifiant les fichiers de configuration d'éditeur et fichiers de configuration de l'application. Un fichier de configuration d'éditeur, également appelé fichier de stratégie d'éditeur, est un fichier XML qui redirige globalement des applications et des assemblys, les empêchant d'utiliser une version d'un assembly côte à côte pour les contraindre à utiliser une autre version du même assembly. Un exemple adéquat de modification de dépendance est lorsqu'un correctif de bogue ou de sécurité est déployé pour un assembly côte à côte spécifique et qu'un éditeur de cet assembly souhaite rediriger toutes les applications afin qu'elles utilisent la nouvelle version de l'assembly. Un fichier de configuration de l'application est un fichier XML qui redirige une application spécifique de façon à ce qu'elle utilise, plutôt qu'une version d'un assembly côte à côte, une autre version du même assembly. Il peut être utilisé pour rediriger une application spécifique afin qu'elle utilise une version d'assembly côte à côte autre que celle qui est définie dans le fichier de configuration d'éditeur global. Pour plus d'informations, consultez Configuration.

Bibliothèques Visual C++

Les bibliothèques telles qu'ATL, MFC, CRT, Standard C++, OpenMP et MSDIA sont déployées en tant qu'assemblys côte à côte partagés dans le cache d'assembly natif. Par défaut, toutes les applications Visual C++ sont générées avec le manifeste incorporé à l'intérieur du fichier binaire final, qui décrit les dépendances de ce fichier binaire vis-à-vis des bibliothèques Visual C++. Pour comprendre la génération de manifestes d'applications Visual C++, consultez Fonctionnement de la génération de manifestes pour les programmes C/C++

Voir aussi

Autres ressources

Génération d'applications isolées C/C++ et d'assemblys côte à côte