visual studio muestra generar compiler compilar cambios visual-studio visual-studio-2008 build rebuild

muestra - Diferencia entre Rebuild y Clean+Build en Visual Studio



visual studio generar (5)

¿Cuál es la diferencia entre solo una Reconstrucción y hacer un Clean + Build en Visual Studio 2008? ¿Es Clean + Build diferente que Clean + Rebuild ?


1 Por proyecto, Reconstruir proyecto = (Proyecto limpio + Proyecto de compilación).

2 por solución, ¡Reconstruir Sln = proyecto foreach (proyecto limpio + proyecto de compilación)! = Sln limpio + Build Sln

Digamos que tienes un Sln, contiene proj1, proj2 y proj3.

Rebuild 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, + significa concurrente

así que existe la posibilidad de que cuando envíes muchos cambios de código mientras no configuras correctamente las dependencias del proyecto, Rebuild Sln causará que algunos de ustedes proyecten un enlace a una biblioteca obsoleta porque no se garantiza que todas las compilaciones se realicen después de todo. En este caso, Clean Sln + Build Sln generará un error de enlace y le informará de inmediato, en lugar de proporcionarle una aplicación con un comportamiento extraño.


De esta publicación de blog que el autor vinculó como comentario sobre esta pregunta :

¡¡¡En realidad no!!! no son iguales

La diferencia está en la secuencia de proyectos de limpiar y construir. Digamos que tenemos dos proyectos en una solución. Limpiar y luego construir generará resultados limpios para ambos proyectos y luego la compilación ocurrirá individualmente mientras que en el proyecto de reconstrucción A se limpiará y luego se construirá después de que el proyecto B esté limpio y luego se construya, y así sucesivamente.


De http://www.cs.tufts.edu/r/graphics/resources/vs_getting_started/vs_getting_started.htm , (solo buscó en Google):

La compilación 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 reconstruirse es necesario para que la compilación sea exitosa. En la práctica, nunca necesitas limpiar.

Build o Rebuild Solution crea o reconstruye todos los proyectos en su solución, mientras Build o Rebuild construye o reconstruye el proyecto de inicio, "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. Debido a que las soluciones de tareas generalmente tienen solo un proyecto, la solución Construir o Reconstruir es efectivamente lo mismo que Construir o Reconstruir.

Compilar solo compila el archivo fuente que se está editando actualmente. Es útil para comprobar rápidamente si hay errores cuando el resto de los archivos de origen están en un estado incompleto que impida una compilación exitosa de todo el proyecto. Ctrl-F7 es el atajo para compilar.


Earl tiene razón en que el 99% del tiempo Rebuild = Clean + Build.

Pero no se garantiza que sean iguales. Las 3 acciones (reconstruir, construir, limpiar) representan diferentes objetivos de MSBuild. Cada uno de los cuales puede ser reemplazado 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 compilación limpia (o eliminarlas por completo).

Es un caso de esquina, pero lo señalo debido a las discusiones de comentarios.


Reconstruir = Limpiar + Construir

Detalles notables:

  1. Para una solución de proyectos múltiples, la "solución de reconstrucción" hace una "limpieza" seguida de una "construcció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 ser significativa cuando las dependencias entre proyectos entran en juego.

  2. 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.