Si vous expédiez une bibliothèque réutilisable composé de plusieurs assemblées, mais seulement quelques-uns d'entre eux forment une façade, vous pouvez envisager l'installation de l'assembly dans le GAC, si le paquet est installé à du développeur de les Ordinateurs.
Imaginez, vous expédiez 6 assemblées, et seulement l'un de ces 6 assemblées contient une façade - c'est à dire 5 autres sont uniquement utilisés par la façade elle-même. Vous navire:
-
MyProduct.Facade.dll - c'est le seul composant destiné à être utilisé par les développeurs
- MyProduct.Core.dll - utilisé par MyProduct.Facade.dll mais pas destiné à être utilisé par les développeurs
- MyProduct.Component1.dll - le même
- MyProduct.Component2.dll - le même
- ThirdParty.Lib1.dll - la troisième partie de la bibliothèque utilisée par MyProduct.Component1.dll
- ThirdParty.Lib2.dll - le même
- etc.
Les développeurs à l'aide de votre projet voudrais juste une référence MyProduct.Facade.dll dans leurs propres projets. Mais lorsque leur projet est exécuté, il doit être en mesure de charger tous les assemblys référencés récursivement. Comment cela peut être réalisé? En général, ils doivent être offerts dans le dossier Bin, dans le GAC:
- Vous pouvez demander aux développeurs pour localiser votre dossier d'installation et d' ajouter des références à toutes les assemblées de vous y mettre. Cela permettra d'assurer qu'ils vont être copiés dans le dossier Bin pour être disponible au moment de l'exécution.
- Vous pouvez installer VS.NET modèle de projet contenant déjà ces 6 références. Un peu complexe, car il faudrait injecter le chemin de votre assemblées dans ce modèle avant son installation. Cela peut être fait seulement par l'installateur, car ce chemin dépend du chemin d'installation.
- Vous pouvez demander aux développeurs de créer un post spécial-étape de génération en .csproj / .fichier vbproj copier les dépendances nécessaires à dossier Bin. Les mêmes inconvénients.
- Enfin, vous pouvez installer tous vos assemblages dans le GAC. Dans ce cas, les développeurs doivent ajouter la référence juste pour MyProduct.Facade.dll de leur projet. Tout le reste sera disponible lors de l'exécution de toute façon.
Remarque: la dernière option permet de ne pas vous faire de faire de même lors de la livraison du projet à la production de Pc. Vous pouvez expédier toutes les assemblées au sein Bin, ou de les installer dans le GAC - tout dépend de votre souhait.
Donc, la solution décrite montre l'avantage de placer tiers des assemblages dans le GAC au cours du développement. Il n'a pas liées à la production.
Comme vous pouvez le trouver, l'installation dans le GAC est principalement destiné à résoudre le problème de l'emplacement des assemblys requis (dépendances). Si une assemblée est installé dans le GAC, vous pouvez considérer qu'il existe "à proximité" n'importe quelle application. C'est comme l'ajout de chemin .exe sur votre variable PATH, mais dans "géré de manière". - bien sûr, c'est plutôt une description simplifiée ;)