Ce n'est pas une question problématique mais une question de compréhension générale sur le fonctionnement de la redirection de liaison d'assembly.
Requêtes
- Pourquoi la redirection de liaison n'affiche que la version majeure et non les numéros mineurs, de construction et de révision?
L'ancienne et la nouvelle version changent-elles uniquement en cas de modification de la version principale?
<dependentAssembly> <assemblyIdentity name="FooBar" publicKeyToken="32ab4ba45e0a69a1" culture="en-us" /> <bindingRedirect oldVersion="7.0.0.0" newVersion="8.0.0.0" /> </dependentAssembly>
c#
assembly-binding-redirect
Nikhil Agrawal
la source
la source
oldVersion="0.0.0.0-4.1.0.0" newVersion="4.1.0.0"
Réponses:
Pourquoi des redirections de liaison sont-elles nécessaires? Supposons que vous ayez l'application A qui référence la bibliothèque B, ainsi que la bibliothèque C de la version 1.1.2.5. La bibliothèque B fait également référence à la bibliothèque C, mais de la version 1.1.1.0. Nous avons maintenant un conflit, car vous ne pouvez pas charger différentes versions du même assembly lors de l'exécution. Pour résoudre ce conflit, vous pouvez utiliser la redirection de liaison, généralement vers la nouvelle version (mais peut également l'être vers l'ancienne). Pour ce faire, ajoutez ce qui suit au fichier app.config de l'application A, sous la
configuration > runtime > assemblyBinding
section (voir ici un exemple de fichier de configuration complet):Vous pouvez également spécifier une plage de versions à mapper:
Maintenant, la bibliothèque B, qui a été compilée en 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 sûr, vous feriez mieux de vous assurer que la bibliothèque C est rétrocompatible, sinon cela pourrait conduire à des résultats inattendus.
Vous pouvez rediriger toutes les versions de bibliothèques, pas seulement les principales.
la source
Nous avons rencontré un problème avec la redirection de liaison pour NewtonSoft.Json. Nous avons recherché la version du fichier dans les propriétés du fichier win 10 "9.0.1.19813", recherché le numéro et la redirection a échoué. Une enquête plus approfondie et nous avons constaté que nous recherchions la version du fichier et non la version de l'assembly. Donc, je me demande si les gens se trompent sur la version du fichier (qui change souvent) et la version de l'assemblage (que vous ne pouvez pas voir dans l'explorateur de fichiers Windows 10). Pour voir la version Assembly d'une dll, vous pouvez l'exécuter dans PowerShell. Remplacez le nom de la dll par celui dont vous souhaitez rechercher la version.
Le résultat de ci-dessus est.
Voir les références:
Comment puis-je voir la version d'assemblage d'un assemblage .NET dans Windows Vista et les versions ultérieures (WIndows 7, 2008)?
https://support.microsoft.com/en-nz/help/556041
la source