S'il a le même numéro de version que la DLL référencée, le GAC est utilisé.
Si vous incrémentez le numéro de version, reconstruisez le site Web en faisant référence au nouveau numéro de version, placez la nouvelle version dans le répertoire/bin, puis cette DLL sera utilisée.
Si vous ne voulez pas changer le numéro de version, vous n'avez pas vraiment de chance.
Lorsque .NET charge des assemblys nommés forts, il essaie d'abord de déterminer le numéro de version à utiliser. Il le fait d'abord via la référence, puis il recherche publisher policies, puis il recherche binding redirects dans le fichier de configuration. Après cela, il recherche l'assembly dans le GAC, puis dans codebase specified, puis il sonde différents dossiers du système de fichiers pour la DLL. Si, à l'une de ces étapes, il trouve l'assemblage de la bonne version, il s'arrête.
Si vous ne modifiez pas le numéro de version de votre assembly nommé fort, .NET trouvera celui d'origine dans le GAC et arrêtera de chercher. Notez que, parce qu'il s'arrête quand il en trouve un, et parce que regarder dans le GAC est le premier, spécifier une base de code pour votre assembly ne fera rien, sauf si vous spécifiez également un nouveau numéro de version.
Est-ce que je comprends bien? Si la version 1.0.0.0 est dans le GAC mais que je compile avec la version 1.0.0.1 et que je place 1.0.0.1 dans mon BIN, alors GAC est ignoré et BIN est utilisé.Si je supprime le .dll de mon BIN alors 1.0.0.0 dans le GAC sera utilisé même si j'ai compilé avec 1.0.0.1? –
Non. Si vous compilez sur un assembly avec un nom fort, il vous faudra le numéro de version exact, à moins qu'il y ait une politique d'éditeur ou des redirections de liaison disponibles. –
Les stratégies d'éditeur et les redirections de liaison permettent la redirection de la version #, donc si votre programme est compilé avec la version 1.0.0.0 et qu'il existe une politique de redirection de liaison ou d'éditeur spécifiant 1.0.0.1, elle devient la version recherchée. –