2010-06-22 13 views
843

¿Cuál es la diferencia entre Build Solution, Rebuild Solution y Clean Solution en Visual Studio?¿Diferencia entre la solución de compilación, la solución de reconstrucción y la solución limpia en Visual Studio?

¿Cuándo es el momento adecuado para usar cada uno de estos?

+3

Vea también http://stackoverflow.com/questions/1247457/difference-between-rebuild-and-clean-build-in-visual-studio-2008 – Greg

+3

[Aquí hay una buena publicación con detalles] (http://conceptf1.blogspot.com/2013/11/visual-studio-clean-build-and-rebuild-solution.html) –

+1

¿La reconstrucción es igual que limpiar y compilar? –

Respuesta

131

Tomado de this link:

Construir significa compilar y vincular sólo los archivos de origen que han cambiado desde la última construcción, mientras Reconstruir medios compilar y enlazar todas las fuentes archivos independientemente de que cambiarse o no. Build es lo normal que hacer y es más rápido. A veces, , las versiones de los componentes del objetivo del proyecto pueden perder su sincronización y la reconstrucción es necesaria para que la compilación tenga éxito. En la práctica, nunca necesita limpiar.

+3

[Aquí hay una buena publicación con detalles] (http://conceptf1.blogspot.com/2013/11/visual-studio-clean-build-and-rebuild-solution.html) –

+1

¿Enlace? Pensé que la idea de una DLL, también conocida como Dynamic Link Library, era vincular en tiempo de ejecución. –

+2

"En la práctica, nunca es necesario limpiar" <- Llamo a BS en este caso. – piers7

6

La solución de compilación creará cualquier proyecto en la solución que haya cambiado. Rebuild construye todos los proyectos sin importar qué, la solución limpia elimina todos los archivos temporales asegurando que la siguiente compilación esté completa.

26

Solución de compilación - Compila cualquier ensamblado que tenga archivos cambiados. Si un ensamblaje no tiene cambios, no será reconstruido. Además, no eliminará ningún archivo intermedio.

Se usa con más frecuencia.

Reconstruir solución - Reconstruye todos los ensamblajes independientemente de los cambios pero deja archivos intermedios.

Se usa cuando se observa que Visual Studio no incorporó los cambios en el último ensamblaje. Algunas veces Visual Studio comete errores.

Limpiar solución - Borrar todos los archivos intermedios y reconstruir todos los conjuntos independientemente de los cambios

utiliza cuando todo lo demás falla y hay que limpiar todo y empezar de cero.

+17

Clean no hace una compilación. –

+3

@Jon Skeet: aprende algo nuevo todos los días. Juraría que hizo una reconstrucción. Supongo que mi memoria no siempre es tan confiable como me gustaría. –

688
  • Build solution realizará una construcción incremental: si no lo hace piensan que necesita para reconstruir un proyecto, no lo hará. También puede usar bits parcialmente construidos del proyecto si no han cambiado (no sé hasta dónde lleva esto)
  • Rebuild solution limpiará y luego generará la solución desde cero, haciendo caso omiso de todo lo que haya hecho antes.
  • Clean solution eliminará los artefactos de compilación de la compilación anterior. Si hay otros archivos en los directorios de destino de compilación (bin y obj), es posible que no se eliminen, pero sí los artefactos de compilación reales. He visto el comportamiento de este variar - a veces borrando bastante bien ya veces no - pero voy a dar VS el beneficio de la duda por el momento :)

(Los enlaces son a la devenv.exe interruptores de línea de comando, pero hacen lo mismo que los elementos del menú.)

+0

@Jon - a Clean limpia las carpetas bin y obj en mi experiencia? – womp

+2

@womp: No en el proyecto que acabo de ver. Todavía tiene todos los ensambles allí ... –

+1

@Jon - raro. No recuerdo haber limpiado nunca esos directorios. Lo estoy haciendo ahora mismo y está borrando todos los archivos .dll y .pdb. Definitivamente deja mi basura ReSharper solo. – womp

13

Solo pienso en Rebuild como realizando primero Clean seguido de Build. Quizás estoy equivocado ... ¿comentarios?

+0

Esto no tenía votos ascendentes (hasta ahora) y de acuerdo con los documentos (ver el enlace en la respuesta de Jon) esto es exactamente correcto. – Tod

+2

No creo que sí. Tengo una situación en la que funciona una solución limpia, seguida de la solución de compilación, pero falla la solución de reconstrucción. Se trata de una solución recién creada con 2 proyectos (uno dependiente del otro). – Cthutu

+0

@Cthutu Vea la respuesta de Shivprasad para los detalles que hacen la diferencia aquí. La reconstrucción limpia y luego construye cada proyecto individual a la vez, mientras que la ejecución Limpiar primero limpia todo a la vez, luego Build lo construye todo de una vez. Me encontré con casos en los que este cambio en el orden de limpieza/compilación hace la diferencia entre compilar y no compilar, también. – Sean

319

Solución de compilación: compila los archivos de código (DLL y EXE) que se modifican.

Reconstruir: elimina todos los archivos compilados y los compila de nuevo, independientemente de si el código ha cambiado o no.

Solución limpia: elimina todos los archivos compilados (archivo DLL y EXE).

Se puede ver este vídeo de YouTube (Visual Studio Build vs. Rebuild vs. Clean (C# interview questions with answers)) donde he demostrado las diferencias y por debajo son representaciones visuales que le ayudarán a analizar el mismo con más detalle.

Build vs Rebuild

La diferencia entre Reconstruir vs (Clean + Build), porque parece que hay cierta confusión en torno a este, así:

La diferencia es la forma en la construcción y la secuencia de limpieza pasa por cada proyecto. Supongamos que su solución tiene dos proyectos, "proj1" y "proj2". Si haces una reconstrucción, tomará "proj1", limpiará (eliminará) los archivos compilados para "proj1" y lo compilará. Después de eso, tomará el segundo proyecto "proj2", limpiará los archivos compilados para "proj2" y compilará "proj2".

Pero si hace una "limpieza" y compila ", primero eliminará todos los archivos compilados para" proj1 "y" proj2 "y luego compilará" proj1 "primero seguido de" proj2 ".

Rebuild Vs Clean

+17

Gracias por explicar por qué Rebuild no siempre funciona y a menudo necesito limpiar antes de hacer una compilación. –

+4

Sí, la descripción y el segundo diagrama fueron muy útiles y claros. Si pudieras arreglar el diagrama de flujo "ilegal", para que el Sí solo vaya a un lugar, eso ayudaría. Realmente no puedo entender lo que ese alguien está tratando de decir, especialmente con "Build ALL" en "Rebuild". –

+0

@JonCoombs Sí, no creo que el primer diagrama de flujo capturara exactamente lo que dijo en el video. Creo * que la imagen que he insertado es a lo que Shivprasad apuntaba. – ruffin

2

Generar solución sólo construye los proyectos que han cambiado en la solución, y no afecta a las asambleas que no han cambiado,

a reconstruir primeros limpia, todos los conjuntos de la solución y después se construye toda solución independientemente de los cambios realizados.

Limpio, simplemente limpia la solución.

+0

[La reconstrucción limpia los proyectos uno a la vez que no es lo mismo que 'Clean + Build'.] (Https://stackoverflow.com/a/17781143/6655092) – JakeD

12

Solución de compilación - Compila cualquier ensamblaje que tenga archivos cambiados. Si un ensamblaje no tiene cambios, no será reconstruido. Además, no eliminará ningún archivo intermedio.

Reconstruir solución va a limpiar y luego construir la solución a partir de cero, haciendo caso omiso de todo lo que ha hecho antes

Limpiar solución se eliminarán todos los archivos compilados (es decir, EXE y DLL) desde el directorio bin/obj.

6

Solución de compilación - La solución de compilación creará su aplicación para generar el número de proyectos que están teniendo cambios de archivo. Y no borra ninguno de los archivos binarios existentes y simplemente reemplaza los ensamblados actualizados en la carpeta bin u obj.

Rebuild Solution - Rebuild solution construirá toda su aplicación con la construcción de todos los proyectos disponibles en su solución para su limpieza. Antes de compilar, borra todos los archivos binarios de la carpeta bin y obj.

Solución limpia - La solución limpia simplemente borra todos los archivos binarios de la carpeta bin y obj.

2

solución Construir

Esto llevará a cabo una construcción incremental. En otras palabras, solo creará archivos de código que hayan cambiado. Si no han cambiado, esos archivos no se tocarán.

solución Reconstruir

Esto eliminará todos los archivos compilados actualmente (es decir, EXE y DLL) y va a construir todo desde cero, independientemente de si hay cambio de código en el archivo o no.

menú Solución limpia

Este menú se eliminarán todos los archivos compilados (es decir, EXE y DLL) desde el directorio bin/obj.

Reconstruir = Clean + Construir

Cuestiones relacionadas