Question

Garder les choses simples, assumer ne sont pas des DLL dans le dossier local, ni des fichiers de configuration impliqués ou des stratégies d'éditeur ou une résolution personnalisée. Les seules DLL référencées seules sont dans le GAC.

Comment Fusion décide-t-elle quelle version des DLL dans le GAC à opter (toutes les autres choses égales), quelle est l'ordre de priorité?

Par exemple, si dans mon projet, j'ai référencé une DLL de version 10.5.0.0. Pourrait-il choisir la DLL de la version 10.5.0.0 ou 10.5.1.0. Sinon, si je n'avais que la version 10.4.0.0 dans le GAC, cela fonctionnerait-il ou lancé une erreur? Ces règles changent-elles en fonction de la situation majeure / mineure / Build / Revision qui change?

Comment cela diffère-t-il si la référence de projet "Version spécifique" est définie sur True ou False?

Et comment cela diffère-t-il si la référence est une référence DLL ou une référence de projet?

Je suppose qu'il y a un site Web MSDN quelque part indiquant comment cela fonctionne, mais je n'arrive pas à le trouver. Je ne cherche pas à remplacer le comportement, je veux juste savoir quel est le comportement par défaut.

Était-ce utile?

La solution

Il est documenté sur msdn dans Comment le temps d'exécution Localise les assemblages . En particulier, le GAC n'est recherché que si l'ensemble est chargé à l'aide d'un nom fort. Il reste peut-être des politiques d'éditeur en place que "redirige" à une autre assemblée, mais il n'y a pas de règles automatiques en place.

À mon avis, le GAC n'est que quelque chose qui doit être utilisé par Microsoft pour le .NET Framework et vous pouvez supprimer beaucoup de douleur en distribuant votre application ou votre bibliothèque sans utiliser le GAC (à l'exception du cadre .NETE bien sûr) .

Référencement d'une version spécifique d'un assembly est une propriété de temps de construction et n'affecte pas le comportement du temps d'exécution. Toutefois, lorsqu'une référence d'assemblage est compilée dans une exécutable, la version est stockée dans l'exécutable et au moment de l'exécution que la version spécifique est chargée (après l'application des règles de redirection d'assemblage).

Donc, pour résumer: Pour que .NET soit charger une autre version de l'Assemblée demandée, il doit y avoir une redirection d'un assemblage en place. Votre candidature peut fournir des redirections dans le fichier APP.Config et le GAC peut avoir des stratégies d'éditeur.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top