web-dev-qa-db-fra.com

A quoi servent les dossiers obj et bin (créés par Visual Studio)?

J'ai créé un nouveau projet dans Visual Studio 2010 et j'ai remarqué qu'il y avait maintenant deux nouveaux dossiers nommés obj et bin dans mon répertoire de projet.

Une paire de dossiers similaire est créée lors de la création et du débogage - à quoi servent ces dossiers?

187
yesraaj

Le dossier obj contient fichiers objet ou intermédiaires, qui sont des fichiers binaires compilés qui n'ont pas encore été liés. Ce sont essentiellement des fragments qui seront combinés pour produire l'exécutable final. Le compilateur génère un fichier objet pour chaque fichier source et ces fichiers sont placés dans le dossier obj.

Le dossier bin contient fichiers binaires, qui constituent le code exécutable réel de votre application ou de votre bibliothèque.

Chacun de ces dossiers est subdivisé en dossiers Debug et Release, qui correspondent simplement aux configurations de construction du projet. Les deux types de fichiers décrits ci-dessus sont placés dans le dossier approprié, en fonction du type de construction que vous effectuez. Cela vous permet de déterminer facilement quels exécutables sont construits avec des symboles de débogage et ceux qui ont été construits avec des optimisations activées et prêtes à être publiées.

Notez que vous pouvez modifier l'emplacement où Visual Studio génère vos fichiers exécutables lors d'une compilation dans les propriétés de votre projet. Vous pouvez également modifier les noms et les options sélectionnées pour vos configurations de construction.

201
Cody Gray

Je vous encourage à voir cette vidéo sur youtube qui montre la différence entre les dossiers dossiers C # bin et obj et explique également comment nous bénéficions des avantages de la compilation incrémentielle/conditionnelle.

La compilation en C # est un processus en deux étapes, voir le diagramme ci-dessous pour plus de détails: -

  1. Compilation: - Au cours de la phase de compilation, des fichiers de code C # individuels sont compilés en unités compilées individuelles. Ces fichiers de code compilés individuels vont dans le répertoire OBJ.
  2. Liaison: - Lors de la phase de liaison, ces fichiers de code compilés sont liés pour créer une seule unité DLL et EXE. Cela va dans le répertoire BIN.

C# bin vs obj folders

Si vous comparez les répertoires bin et obj, vous trouverez plus de fichiers dans le répertoire "obj", car il contient des fichiers de code compilés individuels, tandis que "bin" a une seule unité.

bin vs obj

23

Le répertoire obj est destiné aux fichiers objets intermédiaires et aux autres fichiers de données transitoires générés par le compilateur ou le système de construction au cours d'une construction. Le répertoire bin est le répertoire dans lequel les fichiers binaires de sortie finaux (et toutes les dépendances ou autres fichiers déployables) seront écrits.

Si vous le souhaitez, vous pouvez modifier les répertoires utilisés à ces deux fins dans les paramètres du projet.

16
Josh

Un fait intéressant à propos du répertoire obj: si vous avez configuré la publication dans un projet Web, les fichiers qui seront publiés sont transférés vers obj\Release\Package\PackageTmp. Si vous souhaitez publier les fichiers vous-même plutôt que d'utiliser la fonctionnalité VS intégrée, vous pouvez récupérer les fichiers que vous avez réellement besoin de déployer ici, plutôt que de parcourir tous les débris numériques du répertoire bin.

3
Roger Hill