web-dev-qa-db-fra.com

Où stocker les fichiers externes DLL?

Dans mon projet, j'utilise des bibliothèques tierces. Je les inclue en utilisant le dossier références dans Visual Studio.

Mais où dois-je enregistrer les fichiers DLL? Ils sont référencés à partir d'un chemin dans le système de fichiers, mais ce serait bien si je pouvais les inclure dans le projet. Mais comment?

51
anon

C'est ce que je fais:

  • Créez un dossier lib au niveau de la solution
  • Téléchargez et copiez tous mes fichiers tiers DLL
  • Référence du dossier lib
  • Mettez tous ces fichiers DLL dans le contrôle de source. J'utilise Subversion , et je les ajoute manuellement mais c'est unique.

Vous pouvez également ajouter un dossier de solution et les y ajouter.


MISE À JOUR 2012-12-19

La réponse ci-dessus était quand NuGet était dans la petite enfance. FWIW, mon approche où nous avons des éléments NuGet:

  1. Faites comme ci-dessus pour les simples DLL (où ils n'ont pas de paquet NuGet)
  2. Activez "Restauration de package" pour la solution
  3. Changement packages.config fichier si nécessaire pour verrouiller la version dans un package particulier
  4. Ne stockez pas le package eux-mêmes dans le système de contrôle de version (définissez ignorer pour Git , Mercurial , etc.)

J'utilise en fait NuGet pour gérer même les dépendances internes et j'ai un flux privé.

64
Aliostad

En règle générale, la structure de mes projets ressemble à ceci (au minimum):

projectname
   - trunk
       - src
       - lib
   - support
       - docs
   - releases

Le dossier trunk contient la copie de la source sur laquelle je travaille en ce moment. De plus, il y a un répertoire 'lib', qui contient tous les assemblys tiers référencés par mon projet.
(Je fais référence aux assemblées à cette position).

Le dossier "releases" contient des branches du tronc. Par exemple, lorsque la v1 est publiée, une branche est prise du tronc afin que j'ai une copie du code source et de toutes ses dépendances qui est nécessaire pour construire la version 1 de l'application. (C'est pratique pour les corrections de bogues. Corrigez le bogue dans cette branche, fusionnez le correctif dans le tronc, reconstruisez cette branche et vous avez une version 1 fixe de votre application).

Toutes ces choses entrent dans le contrôle de code source. (Oui, les assemblages référencés également). Ce faisant, il est très facile si un autre collègue doit également travailler sur le projet. Il obtient juste la dernière version du contrôle de source, et il (ou elle) a tout en place pour pouvoir compiler et construire).

(Notez que cela est également vrai si vous utilisez quelque chose comme CruiseControl pour intégration continue ).

9
Frederik Gheysels

Vous devriez regarder NuGet . Il s'agit d'une extension de gestion de package pour Visual Studio 2010 conçue exactement pour ce que vous voulez.

4
Antony Scott

Dans la fenêtre des propriétés de Visual Studio pour la référence à la DLL, il existe une propriété appelée "Copier local" - définissez-la sur true, et elles seront copiées dans le répertoire bin de votre projet local

4
Dean Chalk

Jetez un oeil à NuGet (gestionnaire de packages pour Visual Studio) ...

NuGet est une extension Visual Studio qui facilite l'installation et la mise à jour des bibliothèques et des outils open source dans Visual Studio.

Lisez ensuite ce doc NuGet pour obtenir la crème de la crème :

tilisation de NuGet sans valider les packages pour le contrôle de code source

4
Leniel Maccaferri

Jetez un œil à Tree Surgeon - Crée un arbre de développement pour un projet .NET, qui peut être un bon point de départ et à partir de là, vous pouvez improviser.

2
abhilash

Pour répondre correctement à cette question, vous devez faire la différence entre environnement et ensemble de travail.

Environnement:

  • Il s'agit de tous les outils et bibliothèques nécessaires pour créer votre solution.
  • Les choses dans l'environnement devraient rester raisonnablement constantes.
  • Les choses dans l'environnement sont généralement versionnées et vous devriez pouvoir avoir plusieurs versions côte à côte.
  • Les choses dans l'environnement sont généralement autorisées.
  • L'environnement n'est pas sous contrôle de source.
  • Un bon exemple serait Visual Studio.

Ensemble de travail:

  • Il s'agit essentiellement de votre code source.
  • Il s'agit de toutes les exigences nécessaires pour accéder à votre exécutable final.
  • Vous devez vous attendre à ce que l'ensemble de travail change beaucoup pendant le développement.
  • L'ensemble de travail doit être sous contrôle de source.

Vous devez décider dans quelle catégorie correspond votre composant.

1
Nobody

Personnellement, j'ai un dossier dans mon contrôle de code source pour les DLL tierces (avec un dossier pour chaque entreprise, organisation) et je les référence à partir de là.

Ces fichiers sont ensuite disponibles pour tous les développeurs qui téléchargent la source et peuvent être mis à jour facilement.

1
Jonathon Bolster