Respuestas:
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 en bin
.
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.
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. El bin
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.
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.
Tenga cuidado con los setup
proyectos si los está usando; Los proyectos de instalación de Visual Studio se Primary Output
extraen de la obj
carpeta en lugar de bin
.
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 los bin
ensamblajes de carpetas y deberían haber apuntado a la obj
carpeta asambleas en su lugar.
Esto está lejos de ser intuitivo, pero el setup
enfoque general es usar el Primary Output
del proyecto y esta es la obj
carpeta. Me encantaría que alguien pudiera arrojar algo de luz sobre esto por cierto.