Partager via


Instructions pour la création de composants pour l’exécution côte à côte

Remarque

Cet article est spécifique à .NET Framework. Elle ne s’applique pas aux implémentations plus récentes de .NET, notamment .NET 6 et versions ultérieures.

Suivez ces instructions générales pour créer des applications managées ou des composants conçus pour une exécution côte à côte :

  • Lier l’identité de type à une version particulière d’un fichier.

    Le Common Language Runtime associe l'identité de type à une version de fichier particulière à l'aide d'assemblages avec noms forts. Pour créer une application ou un composant pour une exécution côte à côte, vous devez donner à tous les assemblys un nom fort. Cela crée une identité de type précise et garantit que toute résolution de type est dirigée vers le fichier approprié. Un assembly avec nom fort contient des informations sur la version, la culture et l'éditeur que le runtime utilise pour localiser le fichier approprié afin de répondre à une demande de liaison.

  • Utilisez le stockage compatible avec la version.

    Le runtime utilise le Global Assembly Cache pour fournir un stockage prenant en charge la version. Le Global Assembly Cache est une structure de répertoires prenant en charge la version installée sur chaque ordinateur qui utilise 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 en isolation.

    Une application ou un composant qui s’exécute en isolation doit gérer les ressources pour éviter les 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 fichiers spécifique à la version.

Isolation des applications et des composants

Une clé pour la conception réussie d’une application ou d’un composant pour l’exécution côte à côte est l’isolation. L’application ou le composant doit gérer toutes les ressources, en particulier les E/S de fichier, de manière isolée. Suivez ces instructions pour vous assurer que votre application ou votre composant s’exécute de manière isolée :

  • Écrivez dans le Registre d’une manière spécifique à la version. Stockez des valeurs dans des ruches ou des clés qui indiquent la version et ne partagent pas d’informations ou d’état entre les versions d’un composant. Cela empêche deux applications ou composants s’exécutant en même temps de remplacer les informations.

  • Faites en sorte que les objets de noyau nommés soient propres à la version pour éviter une condition de concurrence. Par exemple, une condition de concurrence se produit quand deux sémaphores de deux versions de la même application s'attendent mutuellement.

  • Choisissez des noms de fichiers et répertoires qui prennent en compte la version. Cela signifie que les structures de fichiers doivent s’appuyer sur les informations de version.

  • Créez des comptes d’utilisateur et des groupes de manière spécifique à la version. Les comptes d’utilisateur et les groupes créés par une application doivent être identifiés par version. Ne partagez pas de comptes d’utilisateur et de groupes entre les versions d’une application.

Installation et désinstallation des versions

Lors de la conception d’une application pour une exécution côte à côte, suivez ces instructions concernant l’installation et la désinstallation des versions :

  • Ne supprimez pas les informations du Registre qui peuvent être nécessaires par d’autres applications s’exécutant sous une autre version du .NET Framework.

  • Ne remplacez pas les informations dans le Registre qui peuvent être nécessaires par d’autres applications exécutées sous une autre version du .NET Framework.

  • N’annulez pas l’inscription des composants COM qui peuvent être nécessaires par d’autres applications exécutées sous une autre version du .NET Framework.

  • Ne modifiez pas InprocServer32 ou d’autres entrées de Registre pour un serveur COM déjà inscrit.

  • Ne supprimez pas les comptes d’utilisateur ou les groupes qui peuvent être nécessaires par d’autres applications exécutées sous une autre version du .NET Framework.

  • N’ajoutez rien au Registre qui contient un chemin non versionné.

Le numéro de version de fichier et le numéro de version d’assemblage

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 mise à jour sur site. 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 avec des numéros de version différents sont traités comme deux assemblys différents par le runtime.

L’outil Global Assembly Cache (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 s’installe généralement pas sur un assembly, sauf si le numéro de version de l’assembly est supérieur.

Voir aussi