J'ai créé un projet de test dont la sortie sera un assemblage nommé fort. J'ai spécifié le nom du fichier SNK dans la section 'project -> properties -> Signing' afin que l'assembly soit fort nommé. J'ai ajouté la référence de l'assembly qui n'est pas signé ou fort nommé. Je m'attendais à ce que mon projet ne soit pas du tout construit puisqu'il fait référence à un assemblage non signé. Cependant, il a construit et j'ai pu installer l'assemblage dans GAC aussi! Pourquoi est-ce vrai? (J'utilise .NEt 4.0 et gacutil.exe) Note: Je me suis assuré que l'assembly référencé n'est PAS fort nommé. Puis-je charger par programme l'assembly 'unsigned' (c'est-à-dire non-nommé fort) dans mon programme dont la sortie va être un assembly nommé fort? Si oui, pourquoi est-il autorisé à le faire alors qu'en revanche, .NET ne permet pas d'ajouter une référence aux assemblages non signés?Réflexion et assemblages nommés forts
Si j'ai plusieurs versions du même assembly dans GAC. Dans mon fichier de configuration, si je spécifie juste le nom de l'assembly, quelle version sera chargée à partir de GAC? Est-ce que ce sera la dernière version à chaque fois? Quelle API sera utile? J'ai trouvé de nombreuses méthodes marquées «obsolète» dans la classe
Assembly
.
1
A
Répondre
0
Il n'y a pas de problème dans le référencement signé assemblage d'un assemblage non signé. Cela peut être fait et l'assembly signé peut être GACed.
Oui, vous pouvez charger.
Comment pouvez-vous spécifier l'assemblage par son nom? Il existe une seule API LoadWithPartialName et elle est déconseillée pour plusieurs raisons. Vous avez besoin d'un jeton de version, de culture et de clé publique pour identifier l'assembly de manière unique.
1
Vous pouvez référencer l'assembly non signé dans VS.Net à partir d'un assemblage signé. Mais si vous appelez quoi que ce soit du signe au non signé, la construction échouera.
Merci pour votre réponse. Mais si vous suivez le lien http://msdn.microsoft.com/en-us/library/wd40t7ad.aspx, MSDN dit même que "les assemblys avec un nom fort ne peuvent faire référence qu'à d'autres assemblys à nom fort". Donc, je suis encore confus au sujet du point 1. Si votre réponse à la question 2 est «oui», pourriez-vous s'il vous plaît répondre à ma question pourquoi est-ce autorisé (en considérant l'article sur le lien que j'ai spécifié)? Encore merci. – Learner