2010-05-09 6 views
4

Si nous avons un exécutable .NET qui utilise une bibliothèque .NET, comment le CLR s'assure-t-il que vous utilisez la bonne version de la DLL? CLRwise ce qui est considéré comme la "version correcte dll", pour commencer?Comment le CLR sait-il si l'assemblage donné est le bon?

Est-ce que ça ne regarde que la version? Regarde aussi au moment de la construction (?). Peut-être qu'il regarde un hachage ou quelque chose?

Merci

Répondre

1

Il prend celui utilisé lors de la compilation, identifié par son nom complet - qui comprend non seulement le nom de montage, mais aussi les informations de version complète et l'empreinte de signature numérique si l'on était disponible.

+0

Pourriez-vous expliquer un peu mieux que la signature numérique? Comment et quand est-ce fait? En outre, supposons que je crée une application Hello World et la construisons 10 fois. Est-ce que la sortie .exe sera différente si je ne change pas son code? Est-ce que la version va changer? –

+0

Lisez n'importe quelle introduction dans .NET - "la signature de code" est le sujet que vous voulez. Si oyu a besoin des bases, rien ne vaut la lecture de la documentation. – TomTom

1

Les autres réponses couvrent déjà l'essence.

Fondamentalement, le Framework vérifie le nom de l'assembly, la version et la signature d'un assembly pour trouver une correspondance.
Le nom et la version (et plus de choses!) Que vous pouvez définir à partir du code (attributs AssemblyVersion), et vous pouvez facilement le signer avec l'aide de VS, aussi.

La signature implique la création d'un fichier .pfx (VS en générera une pour vous) et la vérification de "l'assemblage des signes" dans les paramètres de construction. Cela garantira que plusieurs assemblées peuvent coexister avec le même nom et la même version.
(Donc, si deux entreprises ont accidentellement créé deux choses avec le même nom, vous pouvez toujours les utiliser ensemble.)