Creé un nuevo proyecto en Visual Studio 2010 y noté que ahora hay dos nuevas carpetas con nombre obj
y bin
en mi directorio de proyecto.
Al crear y depurar se crea un par similar de carpetas: ¿para qué sirven estas carpetas?
fuente
Creé un nuevo proyecto en Visual Studio 2010 y noté que ahora hay dos nuevas carpetas con nombre obj
y bin
en mi directorio de proyecto.
Al crear y depurar se crea un par similar de carpetas: ¿para qué sirven estas carpetas?
La obj
carpeta contiene archivos de objetos, o intermedios, que son archivos binarios compilados que aún no se han vinculado. Son esencialmente fragmentos que se combinarán para producir el ejecutable final. El compilador genera un archivo de objeto para cada archivo fuente, y esos archivos se colocan en la obj
carpeta.
La bin
carpeta contiene archivos binarios , que son el código ejecutable real para su aplicación o biblioteca.
Cada una de estas carpetas se subdividen en Debug
y Release
carpetas, que simplemente se corresponden con configuraciones de construcción del proyecto. Los dos tipos de archivos descritos anteriormente se colocan en la carpeta correspondiente, según el tipo de compilación que realice. Esto le facilita determinar qué ejecutables se crean con símbolos de depuración y cuáles se crearon con optimizaciones habilitadas y listas para su lanzamiento.
Tenga en cuenta que puede cambiar dónde Visual Studio genera sus archivos ejecutables durante una compilación en las Propiedades de su proyecto. También puede cambiar los nombres y las opciones seleccionadas para sus configuraciones de compilación.
obj
Realmente solo contiene archivos de código de objeto no vinculados ? Desde mi experiencia, que contiene todos los de ellos, y en la etapa de desarrollo final, los archivos que forman parte del "conjunto final" se copian enbin
.Le animo a que vea este video de YouTube que demuestra la diferencia entre las carpetas C # bin y obj y también explica cómo obtenemos el beneficio de la compilación incremental / condicional.
La compilación de C # es un proceso de dos pasos, consulte el siguiente diagrama para obtener más detalles:
Si compara los directorios bin y obj, encontrará una mayor cantidad de archivos en el directorio "obj", ya que tiene archivos de código compilados individuales, mientras que "bin" tiene una sola unidad.
fuente
El
obj
directorio es para archivos de objetos intermedios y otros archivos de datos transitorios generados por el compilador o el sistema de compilación durante una compilación. Elbin
directorio es el directorio en el que se escribirán los binarios de salida final (y cualquier dependencia u otros archivos desplegables).Puede cambiar los directorios reales utilizados para ambos fines dentro de la configuración del proyecto, si lo desea.
fuente
Un hecho interesante sobre el directorio obj: si ha configurado la publicación en un proyecto web, los archivos que se publicarán se organizarán en obj \ Release \ Package \ PackageTmp. Si desea publicar los archivos usted mismo en lugar de utilizar la función VS integrada, puede tomar los archivos que realmente necesita implementar aquí, en lugar de seleccionar todos los desechos digitales en el directorio bin.
fuente
Tenga cuidado con los
setup
proyectos si los está usando; Los proyectos de instalación de Visual Studio sePrimary Output
extraen de laobj
carpeta en lugar debin
.Estuve lanzando aplicaciones que pensé que estaban ofuscadas y las
msi
configuraciones iniciadas durante bastante tiempo antes de descubrir que los archivos de la aplicación implementada en realidad no estaban ofuscados ni firmados mientras realizaba el procedimiento posterior a la compilación en losbin
ensamblajes de carpetas y deberían haber apuntado a laobj
carpeta asambleas en su lugar.Esto está lejos de ser intuitivo, pero el
setup
enfoque general es usar elPrimary Output
del proyecto y esta es laobj
carpeta. Me encantaría que alguien pudiera arrojar algo de luz sobre esto por cierto.fuente