2010-12-06 12 views
4

Pourquoi le dossier x86 existe-t-il dans le dossier obj dans c Fichier projet Sharp?Pourquoi le dossier x86 du répertoire de projet in C#?

Ma structure de fichier de projet est

ProjectOne
---------- Bin
-------------- Debug
---- ---------- Publication
---------- Obj
-------------- x86 // Pourquoi cela?
------------------- Déboguer
------------------- Libération
---- - Mes fichiers source.

Pourquoi mon répertoire courant est bin \ debug, pas projectOne (où mon fichier source existe)?

Répondre

6

Lors de l'exécution, le répertoire actuel sera défini par défaut sur l'emplacement de l'exécutable - qui sera dans votre répertoire bin/debug.

Vous pouvez définir l'emplacement à partir duquel vous voulez l'exécuter lorsque vous le démarrez dans Visual Studio (dans les propriétés du projet - si vous avez besoin de plus de détails, veuillez préciser quelle version/édition de VS vous utilisez). En ce qui concerne le contenu du répertoire obj, vous pouvez pratiquement ignorer le répertoire entier. Il est plein de fichiers intermédiaires que Visual Studio construit et consomme, mais vous n'avez jamais besoin d'utiliser directement les fichiers.

+0

oh !! vous voulez dire que le répertoire courant serait, où mon fichier exe existe ... Je veux utiliser un fichier xml dans le répertoire de projetOne, le dossier j'irais 2 up, ../../xmlfile – PawanS

+2

Si vous cliquez droit sur Propriétés sur le Fichier XML dans Visual Studio, vous pouvez définir le "Copier dans le répertoire de sortie" à "Copier si plus récent", et il sera copié dans le répertoire bin/Debug lors de la construction, et facilitera le déploiement de votre application. – cspolton

+0

@spolto ... wow !! merci pour cette astuce. Quoi qu'il en soit, j'ai résolu mon problème mais vous avez donné un très bon pourboire. – PawanS

0

Le dossier bin contient les fichiers binaires de votre application (c'est-à-dire vos fichiers exécutables). Il est subdivisé en deux (ou plusieurs) dossiers, généralement Debug et Release. Ceux-ci correspondent à vos configurations de construction. Lorsque votre projet est compilé, les fichiers exécutables sont placés dans l'un de ces dossiers, selon le type de build que vous avez effectué. Si vous voulez exécuter votre exécutable en dehors de l'environnement de développement, vous pouvez cliquer sur le fichier ".exe" que vous trouverez dans l'un de ces dossiers. Si vous le souhaitez, vous pouvez modifier l'affichage de vos fichiers exécutables par Visual Studio lors d'une compilation à l'aide de la fenêtre Propriétés de votre projet.

Le répertoire obj contient des fichiers intermédiaires (ou objet) que Visual Studio génère lors de la compilation de votre application. Ce n'est pas vraiment quelque chose dont vous devez vous soucier ou utiliser les fichiers. Enfin, vos fichiers source sont conservés dans le répertoire racine, tel qu'affiché dans la fenêtre de l'Explorateur de solutions. Vous gérez vous-même les emplacements de ces fichiers. ils ne sont pas gérés par Visual Studio.

1

Le dossier x86 fait référence à la plate-forme cible pour votre génération dans votre gestionnaire de configuration de construction. Il vous permet de créer des applications 32 bits sur un système d'exploitation 64 bits. Comme le disent Cody et Jon, vous pouvez ignorer le répertoire obj.

+0

merci spolto, j'ai dissipé mes doutes. – PawanS

0

Les fichiers objets (les fichiers stockés dans Obj) sont des fichiers binaires compilés qui n'ont pas été liés. Pensez-y comme des fragments de l'exécutable final qui sera plus tard combiné pour rendre votre exécutable. Lors de la compilation de votre code source, chaque fichier source sera librement compilé dans un fichier objet. Pourquoi? Aucune raison *, juste comment votre compilateur particulier a été écrit.Il y a d'autres compilateurs dans d'autres langages qui ne font pas cela mais compilent tout en un seul gros binaire en une seule étape. Mais les personnes qui ont écrit votre compilateur ont décidé de compiler d'abord pour séparer les fichiers objets. Maintenant, vous pouvez imaginer que si chaque fichier source génère un fichier objet, chaque fois que vous compilerez du code, votre répertoire source finira par être en désordre et sera rempli avec beaucoup de fichiers .obj (et en fait beaucoup de compilateurs C traditionnellement fait cela). Au fil du temps, les développeurs travaillant sur de grands projets ont commencé à écrire un script de compilation ou à configurer leurs projets pour collecter tous les fichiers .obj dans un seul répertoire afin de rendre le répertoire source moins compliqué. Les personnes qui ont écrit votre compilateur ont manifestement aimé l'idée d'un répertoire Obj distinct et en ont fait la configuration par défaut des projets. Quant à savoir pourquoi il existe un sous-répertoire x86 parce que votre compilateur supporte également d'autres processeurs comme ARM (pour Android, Win Phone 7 et iPhone) et aussi pour différencier entre 32bit et 64bit.


* Note: Il y a en fait de très bonnes raisons de le faire, y compris rendre le code du compilateur plus modulaire et pour soutenir la compilation incrémentale, mais le fait que certaines personnes peuvent faire tout cela sans générer des fichiers OBJ séparés signifie que c'est surtout une décision de conception par les développeurs du compilateur plus que nécessaire.

+0

pouvez-vous me donner une source valide où il est écrit que le fichier objet est créé pendant l'exécution ou le processus de compilation? –

+0

@VikasVerma: Je n'ai pas de référence pratique en ce moment je suppose que je peux google, mais si je vais google, je pourrais aussi bien vous dire de google it. Supprimez simplement tous les fichiers .obj et compilez votre source. Vous les verrez générés. Cela signifie qu'ils sont générés par le processus de compilation. – slebetman

+0

J'ai regardé obj dossier pour voir les fichiers .obj mais je n'ai pas trouvé de fichiers liés .obj après la compilation. –

Questions connexes