À propos des assemblys côte à côte

Un assembly côte à côte Windows est décrit par des manifestes. Un assembly côte à côte contient une collection de ressources (un groupe de DLL, de classes Windows, de serveurs COM, de bibliothèques de types ou d’interfaces) qui sont toujours fournies aux applications ensemble. Celles-ci sont décrites dans le manifeste de l’assembly.

En règle générale, un assembly côte à côte est une seule DLL. Par exemple, l’assembly Microsoft COMCTL32 est une DLL unique avec un manifeste, tandis que l’assembly de bibliothèques run-time du système de développement Microsoft Visual C++ contient plusieurs fichiers. Les manifestes contiennent des métadonnées qui décrivent les assemblys côte à côte et les dépendances d’assembly côte à côte.

Les assemblys côte à côte sont utilisés par le système d’exploitation comme unités fondamentales de nommage, de liaison, de contrôle de version, de déploiement et de configuration. Chaque assembly côte à côte a une identité unique. L’un des attributs de l’identité d’assembly est sa version. Pour plus d’informations, consultez Versions d’assembly.

À compter de Windows XP, plusieurs versions d’assemblys côte à côte peuvent être utilisées par les applications qui s’exécutent en même temps. Les manifestes et le numéro de version de l’assembly sont utilisés par le chargeur pour déterminer la liaison correcte des versions d’assembly aux applications. Les assemblys côte à côte et les manifestes fonctionnent avec les applications et le gestionnaire côte à côte, comme illustré dans la figure suivante.

représentation d’un assembly côte à côte classique

Dans l’exemple précédent, Comctl32.DLL version 6.0 et Comctl32.DLL version 5.0 se trouvent dans le cache d’assembly côte à côte et sont disponibles pour les applications. Lorsqu’une application appelle pour charger la DLL, le gestionnaire côte à côte détermine si l’application a une dépendance de version décrite dans un manifeste. S’il n’existe aucun manifeste pertinent, le système charge la version par défaut de l’assembly. Pour Windows XP, la version 5.0 de Comctl32.DLL est la valeur par défaut du système. Si le gestionnaire côte à côte trouve une dépendance à la version 6.0 indiquée dans un manifeste, cette version est chargée pour s’exécuter avec l’application.

Plusieurs assemblys système clés sont mis à disposition de Microsoft en tant qu’assemblys côte à côte. Pour plus d’informations, consultez Assemblys côte à côte Microsoft pris en charge. Les développeurs d’applications peuvent également créer leurs propres assemblys côte à côte. Pour plus d’informations, consultez Recommandations pour la création d’assemblys côte à côte. Dans de nombreux cas, il est possible de mettre à jour des applications existantes pour utiliser des assemblys côte à côte sans avoir à modifier le code de l’application.

Les développeurs sont encouragés à utiliser des assemblys côte à côte pour créer des applications isolées et à mettre à jour des applications existantes en applications isolées pour les raisons suivantes :

  • Les assemblys côte à côte réduisent le risque de conflits de versions de DLL.
  • Le partage d’assemblys côte à côte permet à plusieurs versions d’assemblys COM ou Windows de s’exécuter en même temps.
  • Les applications et les administrateurs peuvent mettre à jour la configuration de l’assembly sur une base globale ou par application après le déploiement. Par exemple, une application peut être mise à jour pour utiliser un assembly côte à côte qui inclut une mise à jour sans avoir à réinstaller l’application.