Réponses:
Le obj
dossier contient des fichiers objets 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 obj
dossier.
Le bin
dossier contient des fichiers binaires , qui sont le code exécutable réel de votre application ou bibliothèque.
Chacun de ces dossiers est subdivisé en Debug
et Release
dossiers, 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é, selon le type de génération que vous effectuez. Cela vous permet de déterminer facilement quels exécutables sont construits avec des symboles de débogage et lesquels ont été construits avec des optimisations activées et prêtes à être publiées.
Notez que vous pouvez changer où Visual Studio sort 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 build.
obj
contient- il vraiment que des fichiers de code objet non liés ? D'après mon expérience, il contient tous d'entre eux, et à l'étape de construction finale, les fichiers qui font partie de la « dernière série » sont copiés dans bin
.
Je vous encourage à voir cette vidéo youtube qui montre la différence entre les dossiers C # bin et obj et explique également comment nous bénéficions de la compilation incrémentielle / conditionnelle.
La compilation C # est un processus en deux étapes, voir le diagramme ci-dessous pour plus de détails:
Si vous comparez les répertoires bin et obj, vous trouverez un plus grand nombre de fichiers dans le répertoire "obj" car il contient des fichiers de code compilés individuels tandis que "bin" a une seule unité.
Le obj
répertoire est destiné aux fichiers objets intermédiaires et autres fichiers de données transitoires générés par le compilateur ou le système de génération lors d'une génération. Le bin
répertoire est le répertoire dans lequel les binaires de sortie finale (et toutes les dépendances ou autres fichiers déployables) seront écrits.
Vous pouvez modifier les répertoires réels utilisés à ces deux fins dans les paramètres du projet, si vous le souhaitez.
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 placés dans obj \ Release \ Package \ PackageTmp. Si vous souhaitez publier les fichiers vous-même plutôt que d'utiliser la fonction VS intégrée, vous pouvez récupérer les fichiers que vous devez réellement déployer ici, plutôt que de parcourir tous les débris numériques dans le répertoire bin.
Soyez prudent avec les setup
projets si vous les utilisez; Les projets d'installation de Visual Studio sont Primary Output
extraits du obj
dossier plutôt que du bin
.
Je publiais des applications que je pensais être obscurcies et connectées dans les msi
configurations pendant un certain temps avant de découvrir que les fichiers d'application déployés n'étaient en fait ni obscurcis ni signés car j'exécutais la procédure de post-génération sur les bin
assemblys de dossiers et aurait dû cibler le obj
dossier assemblées à la place.
C'est loin d'être intuitif à mon humble avis, mais l' setup
approche générale est d'utiliser Primary Output
le projet et c'est le obj
dossier. J'adorerais que quelqu'un puisse faire la lumière sur ce btw.