2010-06-04 3 views
5

Après avoir lu l'article MSDN How the Runtime Locates Assemblies et en lisant également this, je ne suis toujours pas sûr de la façon dont les assemblys faiblement nommés sont résolus à l'exécution.. Assemblage de réseau résolvant la confusion

Par exemple. Si j'ai une référence à un fichier dll dans mon projet, je compile et déploie, va-t-il prendre une nouvelle version du fichier dll référencé si je remplace juste l'ancien qui a été référencé au moment de la compilation? Est-ce important que la référence dans le fichier de projet spécifie la version etc. de l'assemblage référencé?

Toute illumination bienvenue

Répondre

0

La réponse à vos questions est oui tant aussi longtemps que vous avez Specific Version ensemble à False dans les propriétés de la référence à l'assemblée.

+0

Ceci n'est pas correct, il s'applique uniquement à la compilation. –

1

Le meilleur endroit que j'ai trouvé à apprendre à ce sujet est dans Grimes Fusion Workshop comme peut être trouvé here. C'est très complet tout en restant facile à comprendre.

0

Si la version n'est pas mentionnée, elle récupérera la référence, si la version est mentionnée, elle essaiera de trouver et de charger l'assembly correspondant à la signature avec la version mentionnée. S'il n'est pas trouvé, il lèvera une exception. Pour résoudre ce problème, vous pouvez effectuer une redirection de liaison d'assembly.

2

Si l'assemblage n'est pas trouvé dans le GAC, le CLR le recherchera dans le "chemin de sondage". Qui par défaut est seulement le répertoire qui contient le fichier EXE. Il recherche uniquement une correspondance sur le nom de l'assembly et arrête la recherche lors du premier match.

Il vérifie ensuite le numéro [AssemblyVersion]. S'il ne correspond pas, vous obtiendrez une exception, il ne cherchera plus un autre assembly avec le même nom. Chaque fois que vous avez des problèmes de résolution, vous devez utiliser l'utilitaire Fuslogvw.exe. Il vous montre exactement où le CLR a regardé et ce qui s'est mal passé.

+0

Les références faibles concernent-elles le numéro de version? Mon expérience est que cela correspond juste par nom si vous êtes dans le chemin de sondage (pas sûr de GAC, mais alors ce ne serait pas faible). –

+1

Que ce soit fort nommé ou non n'a pas d'importance. Seul le GAC est capable de résoudre un assembly référencé par numéro de version. Les recherches de chemin de sondage sont effectuées uniquement par nom, le numéro de version est toujours vérifié après la découverte d'un assembly. –