¿Cuál es la diferencia entre Build Solution, Rebuild Solution y Clean Solution en Visual Studio?
¿Cuándo es el momento apropiado para usar cada uno de estos?
¿Cuál es la diferencia entre Build Solution, Rebuild Solution y Clean Solution en Visual Studio?
¿Cuándo es el momento apropiado para usar cada uno de estos?
Respuestas:
(Los enlaces son a los modificadores de línea de comando devenv.exe , pero hacen lo mismo que los elementos del menú).
.gitignore
archivo decente . Pero según la respuesta, Clean no siempre hace un trabajo particularmente minucioso en mi experiencia.
Solución de compilación: compila archivos de código (DLL y EXE) que se modifican.
Reconstruir: elimina todos los archivos compilados y los vuelve a compilar independientemente de si el código ha cambiado o no.
Solución limpia: elimina todos los archivos compilados (archivos DLL y EXE).
Puede ver este video de YouTube ( Visual Studio Build vs.Rebuild vs. Clean (preguntas de la entrevista de C # con respuestas) ) donde he demostrado las diferencias y a continuación hay representaciones visuales que lo ayudarán a analizar lo mismo con más detalle.
La diferencia entre Reconstruir vs. (Limpiar + Construir), porque también parece haber cierta confusión al respecto:
La diferencia es la forma en que ocurre la secuencia de compilación y limpieza para cada proyecto. Digamos que su solución tiene dos proyectos, "proj1" y "proj2". Si realiza una reconstrucción, tomará "proj1", limpiará (eliminará) los archivos compilados para "proj1" y compílelo. Después de eso tomará el segundo proyecto "proj2", limpiará los archivos compilados para "proj2" y compilará "proj2".
Pero si hace una "limpieza" y compilación ", primero eliminará todos los archivos compilados para" proj1 "y" proj2 "y luego construirá" proj1 "primero seguido de" proj2 ".
Tomado de este enlace :
Compilar significa compilar y vincular solo los archivos fuente que han cambiado desde la última compilación, mientras que Reconstruir significa compilar y vincular todos los archivos fuente 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.
Solución de compilación: compila cualquier ensamblado que haya cambiado los archivos. Si un ensamblaje no tiene cambios, no se reconstruirá. Tampoco eliminará ningún archivo intermedio.
Usado más comúnmente.
Reconstruir solución : reconstruye todos los ensamblados independientemente de los cambios, pero deja los archivos intermedios.
Se usa cuando observa que Visual Studio no incorporó sus cambios en el último ensamblado. A veces, Visual Studio comete errores.
Solución limpia : elimine todos los archivos intermedios.
Se usa cuando todo lo demás falla y necesita limpiar todo y comenzar de cero.
Solo pienso en Reconstruir como realizar la Limpieza primero seguida de la Construcción. Quizás estoy equivocado ... ¿comentarios?
file reference
lugar de un, project reference
por lo que el orden de compilación del proyecto no reconoció que tenía que construir un determinado proyecto antes que otro, y el ensamblaje no existía donde debería haberlo durante el ¿construir?
Solución de compilación: compila cualquier ensamblado que haya cambiado los archivos. Si un ensamblaje no tiene cambios, no se reconstruirá. Tampoco eliminará ningún archivo intermedio.
Reconstruir solución limpiará y luego construirá la solución desde cero, ignorando todo lo que se haya hecho antes
Clean Solution eliminará todos los archivos compilados (es decir, EXE y DLL) del directorio bin / obj.
La solución de compilación construirá cualquier proyecto en la solución que haya cambiado. Reconstruir compila todos los proyectos, pase lo que pase, la solución limpia elimina todos los archivos temporales para garantizar que se complete la próxima compilación.
Solución de compilación: la solución de compilación compilará su aplicación con la cantidad de proyectos que están teniendo algún cambio de archivo. Y no borra ningún archivo binario existente y solo reemplaza los ensamblados actualizados en la carpeta bin u obj.
Reconstruir solución : la solución de reconstrucción construirá toda su aplicación con la construcción de todos los proyectos disponibles en su solución con su limpieza. Antes de compilar, borra todos los archivos binarios de la carpeta bin y obj.
Solución limpia: la solución limpia solo borra todos los archivos binarios de la carpeta bin y obj.
Construir solución
Esto realizará una compilación incremental. En otras palabras, solo creará archivos de código que hayan cambiado. Si no han cambiado, esos archivos no serán tocados.
Reconstruir solución
Esto eliminará todos los archivos compilados actualmente (es decir, exe y DLL) y construirá todo desde cero, independientemente de si hay un cambio de código en el archivo o no.
Menú de solución limpia
Este menú eliminará todos los archivos compilados (es decir, EXE y DLL) del directorio bin / obj.
Reconstruir = Limpiar + Construir
Lo más importante que creo que la gente está dejando de lado es que Build and Clean son tareas que se realizan según el conocimiento de Visual Studio de su Proyecto / Solución. Veo muchas quejas de que Clean no funciona o deja archivos sobrantes o no es confiable, cuando, de hecho, las razones por las que dice que no es confiable en realidad lo hacen más confiable.
Clean solo eliminará los archivos y / o directorios (clean) que Visual Studio o el compilador hayan creado. Si copia sus propios archivos o las estructuras de archivos / carpetas se crean a partir de una herramienta o fuente externa, Visual Studio no "sabe que existen" y, por lo tanto, no debe tocarlas.
¿Te imaginas si la operación Clean básicamente realizó un "del *. *"? Esto podría ser catastrófico.
Build realiza una compilación en proyectos modificados o necesarios.
La reconstrucción realiza una compilación independientemente del cambio o de lo que sea necesario.
Clean elimina los archivos / carpetas que ha creado en el pasado, pero inicialmente deja todo lo que no tenía nada que ver.
Espero que esto explique un poco y ayude.
Tengo aa solución en blanco BuildRebuildClean
y una biblioteca de tres clases Models
, Repository
, Notification
.
Yo uso Models
y Repository
en Notification
la biblioteca de clase.
Entonces:
Models
proyecto de la biblioteca, entonces CONSTRUIR solución. En la siguiente captura de pantalla, consulte la marca de tiempo de DLL, EXE se actualiza en Models
y Notification
biblioteca.BuildRebuildClean
. Lo que hace es eliminar todos los ensamblajes, EXE y archivos referidos para compilar nuevamente.Todo lo que sé es que Clean no hace lo que solía hacer "make clean": si limpio una solución, esperaría que elimine los archivos / carpetas obj y bin de modo que se construya como si fuera una nueva compra de la fuente. En mi experiencia, aunque a menudo encuentro momentos en que Clean and Build o Rebuild todavía produce errores extraños en la fuente que se sabe que compila y lo que se requiere es una eliminación manual de las carpetas bin / obj, luego se compilará.
La solución de compilación solo compila aquellos proyectos que han cambiado en la solución y no afecta a los ensamblados que no han cambiado,
ReBuild primero limpia, todos los ensamblajes de la solución y luego construye la solución completa independientemente de los cambios realizados.
Limpia, simplemente limpia la solución.
Esto se refiere solo a la opción "Build Solution".
Estoy completamente harto de la incapacidad de Visual Studio para limpiar realmente las soluciones y escribí esta pequeña herramienta que lo hará por usted.
Primero cierre su solución en VS y arrastre su carpeta desde el Explorador de Windows a esta aplicación o a su icono. Dependiendo de la configuración en la parte inferior de su ventana, también puede eliminar cosas adicionales, lo que ayudará si intenta cargar manualmente su solución en GitHub o compartirla con otra persona:
En pocas palabras, colocará todas las carpetas "Debug", Intellisense y otras cachés que VS pueda reconstruir en la Papelera de reciclaje para usted.