Pourquoi les redirections de liaison sont-elles nécessaires ? Supposons que vous ayez une application A qui fait référence à la bibliothèque B et à la bibliothèque C de la version 1.1.2.5. La bibliothèque B fait à son tour référence à la bibliothèque C, mais à la version 1.1.1.0. Nous avons maintenant un conflit, car vous ne pouvez pas charger différentes versions du même assemblage au moment de l'exécution. Pour résoudre ce conflit, vous pouvez utiliser une redirection de liaison, généralement vers la nouvelle version (mais aussi vers l'ancienne). Pour ce faire, ajoutez la ligne suivante au fichier app.config de l'application A, sous la rubrique configuration > runtime > assemblyBinding
(voir aquí pour un exemple de fichier de configuration complet) :
<dependentAssembly>
<assemblyIdentity name="C"
publicKeyToken="32ab4ba45e0a69a1"
culture="en-us" />
<bindingRedirect oldVersion="1.1.1.0" newVersion="1.1.2.5" />
</dependentAssembly>
Vous pouvez également spécifier une gamme de versions à mettre en correspondance :
<bindingRedirect oldVersion="0.0.0.0-1.1.1.0" newVersion="1.1.2.5" />
Maintenant, la bibliothèque B, qui a été compilée en faisant référence à C de la version 1.1.1.0, utilisera C de la version 1.1.2.5 au moment de l'exécution. Bien entendu, il est préférable de s'assurer que la bibliothèque C est rétrocompatible ou cela pourrait conduire à des résultats inattendus.
Vous pouvez rediriger toutes les versions des bibliothèques, pas seulement les principales.
0 votes
Il peut s'agir de n'importe quelle version, pas seulement de la principale. Par exemple :
oldVersion="0.0.0.0-4.1.0.0" newVersion="4.1.0.0"
0 votes
@Evk : Tous les exemples que j'ai vus montrent uniquement la version majeure.
5 votes
Ce ne sont que des exemples, et il n'est dit nulle part que c'est la seule façon possible.