La solution est-elle la seule possibilité d'utiliser des bibliothèques de GAC dans le code?Utilisation de GAC (Global Assembly Cache) - dans la façon dont il a été conçu
Assembly lib = Assembly.Load("MyLibrary, Version=1.0.0.0, Culture=neutral,
PublicKeyToken=31f5625abd53197f");
Console.WriteLine(lib.GetType("MyClass").GetMethod("Start").Invoke(obj, null));
Je suis un peu confus - j'ai lu tout à fait beaucoup sur GAC et je sais comment signer un assembly, intall et désinstaller l'assemblage dans le GAC, mais ne sais pas comment l'utiliser, et comment il aide les programmeurs (sauf qu'il stocke différentes versions de la même bibliothèque en toute sécurité). J'aimerais pouvoir normalement créer des classes, sans être forcé d'invoquer les méthodes présentées ci-dessus.
Je ne veux pas de solutions de rechange telles que: "changer le registre de Windows" parce que je ne pense pas que GAC a été conçu pour de telles manipulations. Je veux une réponse simple: à quoi sert le GAC, est-ce que l'environnement d'exécution l'utilise d'une manière ou d'une autre?
Quel est le point d'utiliser GAC, quand le code devient vraiment moche et difficile à gérer? Ou peut-être qu'il me manque quelque chose? Peut-être que je devrais copier manuellement un assembly dans mon dossier local? Mais j'ai entendu dire que c'est aussi difficile à faire.
Alors pourquoi il est dit que GAC a aidé à résoudre le problème dit "DLL Hell", s'il n'y a que mes bibliothèques? Et quel est le but de mettre mes assemblées là si je ne sais pas comment les sortir et les réutiliser? Je dois toujours avoir une copie locale: /. Si je comprends bien, vous m'a conseillé de rechercher manuellement le fichier dans mon dossier Windows. L'utilisation par réflexion est-elle utilisée dans l'apliaction? Et un de plus: comment l'assembly mscorlib est-il lié à mes applications, puisqu'il réside dans GAC, mais je l'utilise normalement (pas par réflexion)? (désolé, je veux juste le comprendre; /) –
DLL Hell se compose de bibliothèques installées à l'échelle mondiale qui sont mises à jour et ces mises à jour parfois briser d'autres applications nécessitant une autre version de la bibliothèque xyz. En outre, les DLL classiques ne sont accessibles que par leur nom de fichier, tandis que le GAC utilise également la version et la clé publique générées à partir de votre nom fort. Ainsi, même une bibliothèque avec le même nom ne sera pas en conflit avec la vôtre, étant donné que la clé publique diffère. - Pourquoi pensez-vous que vous avez besoin d'une copie locale lorsque vous avez installé vos assemblys dans le GAC? –
@Marc, utilisez simplement la fenêtre Ajouter une référence pour ajouter une référence à un assembly que vous avez installé dans le GAC, et vous pouvez utiliser ses types comme tout autre assembly référencé, sans rien spécifier dans le code (tout comme vous utilisez divers System. * Des classes). –