2008-10-24 20 views

Respuesta

62

La carpeta "obj" se utiliza para almacenar archivos de objetos temporales y otros archivos utilizados para crear el binario final durante el proceso de compilación.

La carpeta "bin" es la carpeta de salida para binarios completos (ensamblajes).

43

Además de splattne's answer, creo que el razón por tenerlo (y no limpiarlo después de la compilación) es para admitir la compilación incremental. Si ya compiló 100 clases y cambió una de ellas, es mucho más eficiente simplemente recompilar el código para la clase modificada y volver a montar el exe/dll de una mezcla de código nuevo y antiguo.

Por supuesto, la compilación incremental es mucho más compleja que eso, tiene que hacer un seguimiento de todo para que pueda detectar cuándo necesita recompilar una clase, incluso si esa clase no ha cambiado. (por ejemplo, si hay una nueva sobrecarga disponible en una clase, es posible que sea necesario recompilar algunas llamadas).

+0

¿Cuál es la fuente de los archivos 'obj'? Pregunto porque tengo un problema con un proyecto de Azure Cloud Service que está empaquetando la versión incorrecta de 'System.Runtime.dll'. Ver [aquí] (http://stackoverflow.com/q/40572793/7850). –

+0

@ShaulBehr: No estoy seguro de lo que quiere decir con "fuente" aquí, pero no creo que pueda arrojar luz sobre sus problemas, me temo. –

+0

Quiero decir, ¿cómo decide Visual Studio qué versión de una DLL determinada se copia en la carpeta obj? En mi caso, si el proyecto de rol de trabajador hace referencia a la v4.3.1 de System.Runtime, ¿por qué el proyecto del Servicio de Cloud estaría copiando una versión diferente de la DLL en su carpeta obj? –

Cuestiones relacionadas