J'utilise Visual Studio .NET pour créer un composant qui sera partagé par deux applications client. Finalement, je prévois de déployer une nouvelle version de ce composant. Cependant, toutes les nouvelles versions ne seront pas compatibles avec les deux applications client. Lorsque je déploie un composant et les applications clientes, je dois m'assurer de pouvoir mettre à niveau le composant pour une application client unique. Je dois également minimiser le besoin de modifications de configuration lorsque je déploie une nouvelle version du composant. Quels sont les moyens possibles pour atteindre cet objectif?Déploiement de composants .NET (mise à niveau du composant pour une seule application cliente)
Répondre
Si vous déployez dans le Global Assembly Cache, assurez-vous de spécifier une AssemblyVersion différente pour chaque version de l'assembly, puis installez-les côte à côte. Les applications construites contre la version 1 continueront à fonctionner avec la version 1, et les applications construites contre la version 2 continueront à fonctionner avec la version 2. Vous pouvez rediriger une application individuelle à l'aide de l'élément de configuration <bindingRedirect>
. (Une stratégie d'éditeur affecterait toutes les applications, vous devrez donc apporter des modifications à app.config.)
Si vous n'utilisez pas le GAC et que vous déployez plutôt la DLL dans le même répertoire que le fichier EXE, Vous devez vous soucier de la gestion des versions côte à côte. Si vous ne pouvez pas reconstruire l'EXE par rapport à la DLL plus récente, vous devez spécifier la redirection comme décrit ci-dessus.
Si tout cela semble confus, vous avez raison. Si possible, je voudrais utiliser ClickOnce pour déployer vos applications, ce qui rend le processus de déploiement des mises à jour trivial. Les applications déployées ClickOnce ne sont pas installées sur le GAC et vérifient automatiquement les mises à jour en fonction d'une stratégie que vous définissez.
Le meilleur moyen est probablement de simplement configurer des symboles de construction et d'utiliser #ifdef App1 et #ifdef App2 pour activer ou désactiver des morceaux de code ... Signifie que vous n'avez pas à gérer plusieurs projets ou branches ou quelque chose de similaire. En supposant que les bases de code restent relativement similaires, c'est le moins compliqué d'accomplir ce que vous voulez
Vos options sont limitées.
Si vous venez de lier au composant, les deux applications utiliseront la dernière version à sa sortie.
Si vous effectuez un lien avec une version spécifique du composant, vous pourrez résoudre le problème de rupture des modifications, mais cela signifiera que vous devez mettre à jour la configuration des applications à lier par rapport à la version la plus récente.
Je pense que vous devez vous demander pourquoi vous allez introduire des changements révolutionnaires dans votre composant.