¿Cuál es la diferencia entre solo una reconstrucción y hacer una construcción Clean + Build en Visual Studio 2008? ¿ Clean + Build es diferente que Clean + Rebuild ?
¿Cuál es la diferencia entre solo una reconstrucción y hacer una construcción Clean + Build en Visual Studio 2008? ¿ Clean + Build es diferente que Clean + Rebuild ?
Respuestas:
Reconstruir = Limpiar + Construir (generalmente)
Detalles notables:
Para una solución multiproyecto, la "solución de reconstrucción" realiza una "limpieza" seguida de una "compilación" para cada proyecto (posiblemente en paralelo). Mientras que una "solución limpia" seguida de una "solución de compilación" primero limpia todos los proyectos (posiblemente en paralelo) y luego construye todos los proyectos (posiblemente en paralelo). Esta diferencia en la secuencia de eventos puede volverse significativa cuando las dependencias entre proyectos entran en juego.
Las tres acciones corresponden a los objetivos de MSBuild. Por lo tanto, un proyecto puede anular la acción Reconstruir para hacer algo completamente diferente.
Earl tiene razón que el 99% del tiempo Reconstruir = Limpiar + Construir.
Pero no se garantiza que sean lo mismo. Las 3 acciones (reconstruir, construir, limpiar) representan diferentes objetivos de MSBuild. Cada uno de los cuales puede ser anulado por cualquier archivo de proyecto para realizar acciones personalizadas. Por lo tanto, es completamente posible que alguien anule la reconstrucción para realizar varias acciones antes de iniciar una construcción limpia + (o eliminarlas por completo).
Es casi un caso de esquina, pero lo señala debido a las discusiones de comentarios.
Definamos la implementación de reconstrucción predeterminada en términos de implementaciones de limpieza y compilación predeterminadas:
Por proyecto: Proyecto de reconstrucción = Proyecto limpio + Proyecto de construcción.
Por solución: Reconstruir sln = proyecto foreach en sln (proyecto limpio + proyecto de compilación).
Tenga en cuenta que debido a las diferencias en el orden de ejecución, Reconstruir sln no es lo mismo que (Clean sln + Build sln) = (foreach project en sln Clean project) + (foreach project en sln Build project). Además, este "foreach" puede ejecutarse simultáneamente, por lo que se permite ejecutar diferentes tareas simultáneamente en los dos escenarios.
Supongamos que tiene un sln que contiene proj1, proj2 y proj3.
Reconstruir sln = (Clean proj1 + Build proj1) & (Clean proj2 + Build proj2) & (Clean proj3 + Build proj3)
Clean Sln + Build Sln = (Clean proj1 & Clean proj2 & Clean proj3) + (Build proj1 & Build proj2 & Build proj3)
+ significa serial y significa concurrente.
Por lo tanto, si las dependencias del proyecto no están configuradas correctamente, existe la posibilidad de que cuando ejecute Rebuild sln, algunos de sus proyectos se vinculen a una biblioteca obsoleta. Esto se debe a que no se garantiza que todas las limpiezas finalicen antes de que comience la primera compilación. Si ejecuta Clean sln + Build sln, le darán un error de enlace y se lo harán saber de inmediato, en lugar de darle una aplicación con un comportamiento extraño.
De http://www.cs.tufts.edu/r/graphics/resources/vs_getting_started/vs_getting_started.htm , (solo busqué en Google):
Compilar significa compilar y vincular solo los archivos de origen que han cambiado desde la última compilación, mientras que Reconstruir significa compilar y vincular todos los archivos de origen independientemente de si han cambiado o no. Construir es lo normal y es más rápido. A veces, las versiones de los componentes de destino del proyecto pueden desincronizarse y la reconstrucción es necesaria para que la compilación sea exitosa. En la práctica, nunca necesitas limpiar.
Build or Rebuild Solution construye o reconstruye todos los proyectos en su solución, mientras que Build or Rebuild construye o reconstruye el proyecto StartUp, "hola" en la captura de pantalla anterior. Para configurar el proyecto de inicio, haga clic derecho en el nombre del proyecto deseado en la pestaña Explorador de soluciones y seleccione Establecer como proyecto de inicio. El nombre del proyecto ahora aparece en negrita. Dado que las soluciones de tarea generalmente tienen un solo proyecto, la solución de construcción o reconstrucción es efectivamente la misma que la de construir o reconstruir.
Compilar solo compila el archivo fuente que se está editando actualmente. Útil para verificar rápidamente si hay errores cuando el resto de sus archivos de origen están en un estado incompleto que evitaría una compilación exitosa de todo el proyecto. Ctrl-F7 es la tecla de acceso directo para Compilar.
De esta publicación de blog que el autor ha vinculado como comentario sobre esta pregunta :
¡¡¡En realidad no!!! No son iguales.
La diferencia está en la secuencia en que los proyectos se limpian y construyen. Digamos que tenemos dos proyectos en una solución. La limpieza y luego la compilación se realizarán en ambos proyectos y luego la compilación ocurrirá individualmente mientras se está reconstruyendo, el proyecto A se limpiará y luego se construirá después de que el proyecto B se limpiará y luego se construirá y así sucesivamente.