2010-10-19 4 views
32

Nous utilisons TFS et VS 2010.aide avec TFS et les DLL référencées

J'ai travaillé sur un projet qui utilise TFS comme contrôle de source. J'ai un certain nombre de dll que j'ai téléchargées (comme log4net) et référencé dans mon projet. Quand un nouveau programmeur s'est connecté à TFS et a sorti mon projet du contrôle de la source, il a échoué à construire car il disait qu'il manquait toutes ces DLL référencées.

Qu'est-ce que j'ai fait de mal ici? Comment puis-je inclure ces DLL référencées dans le contrôle de source. Ai-je besoin d'ajouter toutes ces DLL à mon projet avant de les référencer? Quand je les ai référencés, je viens de chercher où ils étaient sur mon système de fichiers.

Merci!

Répondre

45

J'ai trouvé que la meilleure pratique pour les DLL tierces est de créer un dossier "Bibliothèque" dans votre structure de fichier sln/proj et de copier toutes les DLL nécessaires dans ce dossier local pour référence. Vous devez également vous assurer que ces DLL sont vérifiées dans le contrôle de source. De cette façon, tous ceux qui travaillent sur le projet obtiennent exactement les mêmes versions de toutes les DLL, et les chemins de référence sont exactement les mêmes.

Le référencement de bibliothèques tierces dans un emplacement de téléchargement ou d'installation arbitraire sera problématique, car tous les développeurs devront conserver la même structure de téléchargement pour toutes les DLL. En outre, si tout le monde référence des DLL en dehors de la structure du projet, il est plus difficile de garantir que tout le monde est sur la même version.

L'autre option serait que tout le monde installe les DLL dans le GAC, mais cela peut aussi être très pénible, en particulier avec la gestion et le déploiement des versions.

+2

Cela a l'avantage supplémentaire que tout développeur (nouveau ou autre) pourrait juste obtenir le dernier, appuyez sur F5, et être opérationnel sans le "où puis-je obtenir DLL X ou comment installer DLL Y" –

+0

dossier de la bibliothèque dans 'sln', je dois ajouter toutes les références que je reçois le projet de server.Am je dans le mauvais sens? – Mohsen

+0

A la place du dossier de la bibliothèque, il est préférable de gérer le gestionnaire de paquets NuGet au niveau de la solution. Je suis d'accord sur la solution ci-dessus seulement dans le cas où ces DLL tiers ne sont pas disponibles par le biais de Nuget. –

1

J'ai essayé différentes méthodes pour résoudre ce problème et je me suis contenté de supprimer les dll requises dans le dossier bin et de m'assurer qu'elles sont incluses dans le projet pour le contrôle des sources. J'ai entendu des gens dire que ce n'était peut-être pas une bonne idée, mais personne n'a donné de bon raisonnement et cela a bien marché pour moi. Mon deuxième choix consisterait à découper de l'espace sur un partage réseau et à organiser les diverses DLL de tierce partie là-bas. Vous pouvez placer vos fichiers dans des dossiers avec des numéros de verions pour garder les choses droites et tout le monde devrait avoir accès à tout ce dont ils ont besoin, à condition que tout le monde utilise les chemins réseau normaux comme référence. L'ajout d'un dossier séparé dans le projet est également réalisable mais semble désordonné, car vous vous retrouvez avec des fichiers supplémentaires que vous ne voulez pas inclure dans votre version.

2

La suggestion d'Andy est bonne et je l'ai utilisée par le passé. Dans mon travail actuel, nous avons un dossier "référence" sur un partage réseau pour nous tous à partir de. Nous avons un réseau très rapide ici, et tous les développeurs sont dans un seul bureau. Cette solution ne fonctionnera pas aussi bien si vous avez beaucoup de développeurs distants ou un réseau lent.

7

J'ai créé un dossier "ThirdPartyDLL" dans mon dossier de projet dans lequel j'ai copié toutes les DLL supplémentaires dans celui-ci. Je suis ensuite allé dans l'explorateur source et ajouté ces DLL dans le serveur de base de l'équipe afin que je sois sûr que j'utilise les versions correctes de la DLL pour des versions spécifiques de mon application (et ainsi tout le monde est sur la même page que moi).

View - autres fenêtres - Source explorateur de coontrol Faites un clic droit dossier de projet - ajouter des éléments dans le dossier

Vous ne pourrez sélectionner un dossier spécifique avec DLL en elle, mais vous pouvez sélectionner la DLL individuelle fichiers dans le dossier. Vous verrez alors le dossier "ThirdPartyDLL" apparaître dans cette fenêtre. Une fois cela fait, ces dll sont dans le contrôle de source de la fondation de l'équipe. Chaque fois qu'un développeur se connecte, il obtient la version la plus récente des DLL. N'oubliez pas de supprimer les anciennes références dans votre application et de les modifier dans votre dossier thirdpartydll. J'ai copié les DLL dans le dossier bin, mais le problème que j'ai rencontré était lors de la mise à niveau des DLL. Initialement, lorsque mon projet était petit, ce n'était pas un gros problème. Maintenant que j'ai plusieurs DLL et applications que j'ai créées, il est devenu très difficile de maintenir des versions cohérentes de DLL en dehors de mon projet. Mon meilleur exemple est le dll de licence que j'ai acheté. Lorsque cela a été mis à jour, toutes les applications et les bibliothèques devaient être sur la même version. Si j'en ai oublié un alors j'ai eu des problèmes étranges ou l'application a juste cessé de fonctionner. Maintenant que j'ai tout dans un dossier, je fais le changement une fois et tout est mis à jour.

Espérons que cela aide.

Questions connexes