web-dev-qa-db-fra.com

TFS et DLL référencées

Nous utilisons TFS et VS 2010.

Je travaille sur un projet qui utilise TFS comme contrôle de source. J'ai pas mal de DLL que j'ai téléchargées (comme log4net) et référencées dans mon projet.

Lorsqu'un nouveau programmeur s'est connecté à TFS et a retiré mon projet du contrôle des sources, il n'a pas pu être construit car il a dit qu'il lui 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 code source. Dois-je ajouter toutes ces DLL à mon projet avant de les référencer? lorsque je les ai référencés, je viens de parcourir leur emplacement sur mon système de fichiers.

36
twal

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

Référencer des bibliothèques tierces dans un emplacement de téléchargement ou d'installation arbitraire sera problématique, car cela exigera que tous les développeurs maintiennent la même structure de téléchargement pour toutes les DLL. De plus, si tout le monde fait référence à des DLL en dehors de la structure du projet, il est plus difficile de garantir que tout le monde utilise 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 difficile, en particulier avec la gestion et le déploiement des versions.

51
Andy White

J'ai créé un dossier "ThirdPartyDLL" dans mon dossier de projet dans lequel j'ai copié toutes les DLL supplémentaires dedans. Je suis ensuite allé dans l'explorateur de sources et j'ai ajouté ces DLL au serveur de la fondation d'équipe pour être sûr d'utiliser les versions correctes des DLL pour des versions spécifiques de mon application (et donc tout le monde est sur la même page que moi.) ).

Affichage - autres fenêtres - Source coontrol Explorer Cliquez avec le bouton droit sur le dossier du projet - ajoutez des éléments au dossier

Vous ne pourrez pas sélectionner un dossier spécifique contenant des DLL, mais à la place vous pouvez sélectionner les fichiers individuels DLL dans le dossier. Vous verrez alors le dossier "ThirdPartyDLL" apparaître dans ce la fenêtre.

Une fois cela fait, ces DLL sont dans le contrôle de code source de la fondation d'é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'avais l'habitude de copier les DLL dans le dossier bin, mais le problème que j'ai rencontré était lorsque les DLL ont été mises à niveau. Au départ, quand mon projet était petit, ce n'était pas grave. 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 la DLL de licence que j'ai achetée. Lorsque cela a été mis à niveau, toutes les applications et bibliothèques devaient être sur la même version. Si j'en ai oublié un, 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 à niveau.

J'espère que cela t'aides.

7
Neon Blue

La suggestion d'Andy est bonne et je l'ai utilisée dans le passé. À mon travail actuel, nous avons un dossier "référence" sur un partage réseau pour nous tous à partir duquel construire. Nous avons un réseau très rapide ici, cependant, 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.

2
Steve Danner

J'ai essayé différentes méthodes pour résoudre ce problème et j'ai décidé 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 fourni un bon raisonnement et cela a bien fonctionné pour moi.

Mon deuxième choix serait de tailler de l'espace sur un partage réseau et d'y organiser les différentes DLL de tiers. Vous pouvez placer vos fichiers dans des dossiers avec des numéros de version pour garder les choses droites et tout le monde devrait avoir accès à tout ce dont ils ont besoin, tant que tout le monde utilise les chemins d'accès réseau normaux comme référence.

L'ajout d'un dossier séparé dans le projet est également réalisable mais semble compliqué, car vous vous retrouvez avec des fichiers supplémentaires que vous ne souhaitez pas inclure dans votre version.

1
lincolnk