2008-11-06 5 views
5

Je me demande quoi inclure lors de la construction de mon projet. J'ai une bibliothèque que j'ai besoin de référencer pour mon projet à construire mais cette bibliothèque a elle-même 10 dépendances. Dois-je également faire référence à ces dépendances ou dois-je les copier dans le répertoire de sortie à l'aide d'un événement de génération de post?Dépendances et références - Que dois-je faire exactement?

Quelle est la meilleure pratique?

Je trouve cela déroutant d'inclure toutes ces dépendances car le projet compile bien sans elles - sont-elles alors appelées dépendances d'exécution? Mes références deviennent encombrées de dépendances irrelevantes à mon projet même si elles sont utilisées dans une bibliothèque que j'inclus.

J'utilise Visual Studio. Est-ce que quelqu'un peut me donner un aperçu de la façon de le faire correctement?

Merci.

Répondre

1

Vous avez seulement besoin d'ajouter des références directement utilisées par votre projet.

Pour les assemblages privés (ceux qui ne sont pas dans le GAC), Visual Studio copiera par défaut les assemblys référencés (et leurs dépendances) dans le répertoire de sortie de votre projet.

Pour les assemblages dans le GAC, Visual Studio ne copie pas l'assembly référencé dans le répertoire de sortie de votre projet par défaut. Dans les deux cas, vous pouvez modifier le comportement en modifiant la propriété de référence "Copier local".

À mon humble avis, c'est une fonctionnalité intéressante de l'environnement de construction. Dans le monde non géré, c'est à vous de garder une trace des dépendances de vos dépendances (généralement à travers des événements avant ou après la construction).

2

C'est juste de l'opinion. De toute façon va fonctionner. Personnellement, je déteste les fichiers BAT post-build, donc j'inclurais les dépendances pour les copier dans le répertoire de sortie.

Une autre option consiste à leur associer un lien dans votre projet, comme dans un répertoire de ressources. Avoir cet ensemble à BuildAction = None, et CopyToOutputDirectory = CopyIfNewer

1

Je suppose que vous travaillez dans Visual Studio.

La réponse courte est d'inclure uniquement les assemblages nécessaires à la compilation de votre projet.

Faire référence à d'autres assemblages ne devrait pas poser de problème, car votre application chargera des assemblages lorsque cela est nécessaire au moment de l'exécution, mais avoir une longue liste de références peut être déroutant et désordonné.

Votre liste de références doit indiquer ce que fait votre programme et quelles fonctions il utilise.

+0

Vous recommandez donc d'utiliser des événements de post-construction ou un autre moyen de fournir les dépendances d'exécution pour les bibliothèques auxquelles je fais référence? – Fadeproof

+0

Eh bien, c'est vraiment une question de goût. Si vos assemblages sont dans le GAC, vous n'avez rien à faire, mais je préférerais ne pas encombrer le projet. –

+1

Aucun n'est dans GAC, dans ce cas dois-je utiliser l'événement post-build? – Fadeproof

Questions connexes