Indications pour la création d'applications et de composants pour l'exécution côte à côte
Suivez ces indications générales pour créer des applications ou des composants managés conçus pour l'exécution côte à côte :
Liez l'identité des types à la version particulière d'un fichier.
Le Common Language Runtime lie l'identité des types à une version de fichier particulière en utilisant des assemblys avec nom fort. Pour créer une application ou un composant pour l'exécution côte à côte, vous devez donner un nom fort à tous les assemblys. Vous créez ainsi une identité des types précise et garantissez que n'importe quelle résolution des types est dirigée vers le fichier correct. Un assembly avec nom fort contient des informations de version, de culture et de l'éditeur que le runtime utilise pour localiser le fichier correct afin de remplir une demande de liaison.
Utilisez le stockage prenant en compte la version.
Le runtime utilise le Global Assembly Cache pour fournir le stockage prenant en compte la version. Le Global Assembly Cache est une structure de répertoire prenant en compte la version installée sur tous les ordinateurs qui utilisent le .NET Framework. Les assemblys installés dans le Global Assembly Cache ne sont pas remplacés lorsqu'une nouvelle version de cet assembly est installée.
Créez une application ou un composant qui s'exécute de manière isolée.
Une application ou un composant qui s'exécute de manière isolée doit gérer les ressources pour éviter des conflits lorsque deux instances de l'application ou du composant s'exécutent simultanément. L'application ou le composant doit également utiliser une structure de fichier spécifique à la version.
Isolation des applications et des composants
L'isolation est un moyen efficace permettant de concevoir une application ou un composant pour l'exécution côte à côte. L'application ou le composant doit gérer toutes les ressources, particulièrement les E/S de fichier, de manière isolée. Suivez ces indications pour vous assurer que votre application ou composant s'exécute de manière isolée :
Écrivez dans le Registre d'une façon spécifique à la version. Stockez des valeurs dans des ruches ou des clés qui indiquent la version, ne partagez pas des informations ou d'état entre les versions d'un composant. Vous empêchez ainsi deux applications ou composants qui s'exécutent en même temps de remplacer des informations.
Rendez les objets du noyau nommés spécifiques à la version afin d'éviter une condition de concurrence critique. Par exemple, une condition de concurrence critique se produit lorsque deux sémaphores provenant de deux versions de la même application s'attendent mutuellement.
Veillez à ce que les noms de fichier et de répertoire prennent en compte la version. Cela signifie que les structures des fichiers doivent dépendre des informations de version.
Créez des comptes et groupes d'utilisateurs d'une façon spécifique à la version. Les comptes et groupes d'utilisateurs créés par une application doivent être identifiés par version. Ne partagez pas les comptes et groupes d'utilisateurs entre les versions d'une application.
Installation et désinstallation de services
Lors de la conception d'une application pour l'exécution côte à côte, suivez ces indications concernant l'installation et la désinstallation de versions :
Ne supprimez pas d'informations du Registre qui peuvent s'avérer nécessaires à d'autres applications s'exécutant sous une version différente du .NET Framework.
Ne remplacez pas d'informations du Registre qui peuvent s'avérer nécessaires à d'autres applications s'exécutant sous une version différente du .NET Framework.
N'annulez pas l'inscription de composants COM qui peuvent s'avérer nécessaires à d'autres applications s'exécutant sous une version différente du .NET Framework.
Ne remplacez pas InprocServer32 ou d'autres entrées de Registre par un serveur COM qui a déjà été enregistré.
Ne supprimez pas d'informations de comptes et de groupes d'utilisateurs qui peuvent s'avérer nécessaires à d'autres applications s'exécutant sous une version différente du .NET Framework.
N'ajoutez aucune information au Registre qui contienne un chemin d'accès sans version.
Numéro de version de fichier et numéro de version d'assembly
La version du fichier est une ressource de version Win32 qui n'est pas utilisée par le runtime. En général, vous mettez à jour la version du fichier même pour une ingénierie de correctifs sur place. Deux fichiers identiques peuvent avoir des informations de version de fichier différentes et deux fichiers différents peuvent avoir les mêmes informations de version de fichier.
La version d'assembly est utilisée par le runtime pour la liaison d'assembly. Deux assemblys identiques dont les numéros de version sont différents sont traités comme deux assemblys différents par le runtime.
L'outil Global Assembly Cache Tool (Gacutil.exe) vous permet de remplacer un assembly lorsque seul le numéro de version du fichier est plus récent. Le programme d'installation ne remplace pas généralement un assembly sauf si le numéro de version d'assembly est supérieur.
Voir aussi
Concepts
Redirection de liaison d'assembly
Détermination d'une stratégie de maintenance pour les applications et les composants
Autres ressources
Notions de base de l'exécution côte à côte
Création de plusieurs versions d'une application ou d'un composant