Tengo un problema muy similar al descrito aquí .
También actualicé una solución mixta de proyectos C ++ / CLI y C # de Visual Studio 2008 a Visual Studio 2010. Y ahora, en Visual Studio 2010, un proyecto C ++ / CLI siempre está desactualizado.
Incluso si se ha compilado y vinculado justo antes y F5se acierta, el cuadro de mensaje "El proyecto está desactualizado. ¿Desea construirlo?" aparece. Esto es muy molesto porque el archivo DLL tiene niveles muy bajos y obliga a reconstruir casi todos los proyectos de la solución.
Mi configuración de pdb está establecida en el valor predeterminado ( solución sugerida para este problema ).
¿Es posible obtener la razón por la cual Visual Studio 2010 fuerza una reconstrucción o cree que un proyecto está actualizado?
¿Alguna otra idea de por qué Visual Studio 2010 se comporta así?
fuente
Respuestas:
Solo para Visual Studio / Express 2010. Ver otras respuestas (más fáciles) para VS2012, VS2013, etc.
Para encontrar los archivos que faltan , use la información del artículo Habilitar el registro del sistema de proyecto C ++ para habilitar el registro de depuración en Visual Studio y dejar que le diga qué está causando la reconstrucción:
devenv.exe.config
archivo (encontrado en%ProgramFiles%\Microsoft Visual Studio 10.0\Common7\IDE\
o en%ProgramFiles(x86)%\Microsoft Visual Studio 10.0\Common7\IDE\
). Para las versiones Express, se nombra el archivo de configuraciónV*Express.exe.config
.Agregue lo siguiente después de la
</configSections>
línea:Busque en el registro de depuración cualquier línea del formulario:
(Simplemente presioné Ctrl + F y busqué
not up to date
) Estas serán las referencias que harán que el proyecto esté "desactualizado" perpetuamente.Para corregir esto, elimine cualquier referencia a los archivos faltantes de su proyecto o actualice las referencias para indicar sus ubicaciones reales.
Nota: Si usa 2012 o posterior, el fragmento debe ser:
fuente
En Visual Studio 2012 pude lograr el mismo resultado más fácilmente que en la solución aceptada.
Cambié la opción en el menú Herramientas → Opciones → Proyectos y soluciones → Compilar y ejecutar → * Verbosidad de salida de compilación del proyecto MSBuild "de Mínimo a Diagnóstico .
Luego, en el resultado de la compilación, encontré las mismas líneas buscando "no actualizado":
fuente
1>Project not up to date because build input 'C:\...\ReadMe.txt' is missing.
: O !!?!was modified at
en modo de diagnóstico porque no teníanot up to date
salidas.Esto me pasó a mí hoy. Pude rastrear la causa: el proyecto incluía un archivo de encabezado que ya no existía en el disco.
Eliminar el archivo del proyecto resolvió el problema.
fuente
También nos encontramos con este problema y descubrimos cómo resolverlo.
El problema fue como se indicó anteriormente "El archivo ya no existe en el disco".
Esto no es muy correcto. El archivo existe en el disco, pero el archivo .VCPROJ hace referencia al archivo en otro lugar.
Puede 'descubrir' esto yendo a la "vista de archivo de inclusión" y haciendo clic en cada archivo de inclusión a su vez hasta que encuentre el que Visual Studio no puede encontrar. Luego AGREGAS ese archivo (como un elemento existente) y borras la referencia que no se puede encontrar y todo está bien.
Una pregunta válida es: ¿Cómo puede Visual Studio incluso construir si no sabe dónde están los archivos de inclusión?
Creemos que el archivo .vcproj tiene alguna ruta relativa al archivo ofensivo en algún lugar que no se muestra en la GUI de Visual Studio, y esto explica por qué el proyecto realmente se construirá a pesar de que la vista en árbol de las inclusiones es incorrecta.
fuente
La respuesta aceptada me ayudó en el camino correcto para descubrir cómo resolver este problema para el proyecto jodido con el que tuve que comenzar a trabajar. Sin embargo, tuve que lidiar con una gran cantidad de encabezados de mala inclusión. Con la salida de depuración detallada, la eliminación de uno provocó que el IDE se congelara durante 30 segundos mientras generaba la descarga de depuración, lo que hizo que el proceso fuera muy lento.
Me impaciente y escribí un script de Python rápido y sucio para verificar los archivos del proyecto (Visual Studio 2010) y generar todos los archivos que faltan a la vez, junto con los filtros en los que están ubicados. Puede encontrarlo como un Gist aquí: https://gist.github.com/antiuniverse/3825678 (o esta bifurcación que admite rutas relativas )
Ejemplo:
Código fuente:
fuente
He eliminado un cpp y algunos archivos de encabezado de la solución (y del disco) pero aún tengo el problema.
La cosa es que cada archivo que utiliza el compilador va en un archivo * .tlog en su directorio temporal. Cuando elimina un archivo, este archivo * .tlog no se actualiza. Ese es el archivo utilizado por las compilaciones incrementales para verificar si su proyecto está actualizado.
Edite este archivo .tlog manualmente o limpie su proyecto y reconstruya.
fuente
Tuve un problema similar, pero en mi caso no faltaron archivos, hubo un error en la forma en que se definió el archivo de salida pdb: olvidé el sufijo .pdb (descubrí el truco de registro de depuración).
Para resolver el problema cambié, en el archivo vxproj, la siguiente línea:
a
fuente
Tuve este problema en VS2013 (Actualización 5) y puede haber dos razones para eso, que puede encontrar habilitando la salida de compilación "Detallada" en "Herramientas" -> "Proyectos y soluciones" -> "Compilar y ejecutar" .
"Forcing recompile of all source files due to missing PDB "..."
Esto sucede cuando deshabilita la salida de información de depuración en las opciones del compilador (en la configuración del proyecto: „C / C ++“ -> “Formato de información de depuración“ a „Ninguno“ y „Linker“ -> “Generar información de depuración“ a „No“:) . Si ha dejado "C / C ++" -> "Nombre del archivo de la base de datos del programa" en el valor predeterminado (que es "$ (IntDir) vc $ (PlatformToolsetVersion) .pdb"), VS no encontrará el archivo debido a un error ( https : //connect.microsoft.com/VisualStudio/feedback/details/833494/project-with-debug-information-disabled-always-rebuilds ).
Para solucionarlo, simplemente borre el nombre del archivo a "" (campo vacío).
"Forcing rebuild of all source files due to a change in the command line since the last build."
Esto parece ser un error VS conocido también ( https://connect.microsoft.com/VisualStudio/feedback/details/833943/forcing-rebuild-of-all-source-files-due-to-a-change-in- the-command-line-since-the-last-build ) y parece estar arreglado en versiones más recientes (pero no VS2013). No conozco ninguna solución, pero si lo haces, publícalo aquí.
fuente
No sé si alguien más tiene este mismo problema, pero las propiedades de mi proyecto se habían
"Configuration Properties" -> C/C++ -> "Debug Information Format"
establecido en "Ninguno", y cuando lo cambié a la "Base de datos del programa (/ Zi)" predeterminada, eso impidió que el proyecto se volviera a compilar cada vez. .fuente
Otra solución simple referenciada por Visual Studio Forum .
Cambio de configuración: menú Herramientas → Opciones → Proyectos y soluciones → Configuración del proyecto VC ++ → Modo Explorador de soluciones para mostrar todos los archivos .
Luego puede ver todos los archivos en el Explorador de soluciones.
Busque los archivos marcados con el icono amarillo y elimínelos del proyecto.
Está bien.
fuente
Visual Studio 2013: "Forzar la recompilación de todos los archivos de origen debido a la falta de PDB". Encendí la salida de compilación detallada para localizar el problema: habilité la salida de compilación "Detallada" en "Herramientas" → "Proyectos y soluciones" → "Compilar y ejecutar".
Tuve varios proyectos, todos C ++, configuré la opción en la configuración del proyecto: (C / C ++ → Formato de información de depuración) a Base de datos del programa (/ Zi) para el proyecto problemático. Sin embargo, esto no detuvo el problema para ese proyecto. El problema vino de uno de los otros proyectos de C ++ en la solución.
Configuré todos los proyectos de C ++ en "Base de datos del programa (/ Zi)". Esto solucionó el problema.
Nuevamente, el proyecto que informaba el problema no era el proyecto problemático. Intente configurar todos los proyectos en "Base de datos del programa (/ Zi)" para solucionar el problema.
fuente
Encontré este problema hoy, sin embargo, fue un poco diferente. Tuve un proyecto DLL CUDA en mi solución. Compilar en una solución limpia estuvo bien, pero por lo demás falló y el compilador siempre trató el proyecto CUDA DLL como no actualizado.
Probé la solución de esta publicación .
Pero no falta ningún archivo de encabezado en mi solución. Entonces descubrí la razón en mi caso.
He cambiado el Directorio Intermedio del proyecto anteriormente, aunque no causó problemas. Y ahora, cuando cambié el Directorio Intermedio del Proyecto DLL CUDA nuevamente a $ (Configuración) \, todo vuelve a funcionar bien.
Supongo que hay un pequeño problema entre CUDA Build Customization y el Directorio intermedio no predeterminado.
fuente
Tuve un problema similar y seguí las instrucciones anteriores (la respuesta aceptada) para localizar los archivos faltantes, pero no sin rascarme la cabeza. Aquí está mi resumen de lo que hice. Para ser precisos, estos no son archivos que faltan, ya que el proyecto no los necesita para construir (al menos en mi caso), pero son referencias a archivos que no existen en el disco que realmente no son necesarios.
Aquí está mi historia:
En Windows 7, el archivo se encuentra en
%ProgramFiles(x86)%\Microsoft Visual Studio 10.0\Common7\IDE\%
. Hay dos archivos similaresdevenv.exe.config.config
ydevenv.exe.config
. Quieres cambiar una más tarde.En Windows 7, no tiene permiso para editar este archivo en archivos de programa. Simplemente cópielo en otro lugar (escritorio) cámbielo y luego cópielo nuevamente en la ubicación de los archivos del programa.
Estaba tratando de descubrir cómo conectar DebugView al IDE para ver los archivos que faltan. Bueno, no tienes que hacer nada. Simplemente ejecútelo y capturará todos los mensajes. Asegúrese de que la
Capture Events
opción de menú esté seleccionada en elCapture
menú que por defecto debería seleccionarse.¡DebugView NO mostrará todos los archivos que faltan a la vez (al menos no para mí)! Debería ejecutar DebugView y luego ejecutar el proyecto en Visual Studio 2010. Aparecerá el
project out of date
mensaje, seleccione Sí para compilar y DebugView mostrará el primer archivo que falta o está causando la reconstrucción. Abra el archivo del proyecto (no el archivo de la solución) en el Bloc de notas y busque ese archivo y elimínelo. Es mejor que cierre su proyecto y lo vuelva a abrir mientras realiza esta eliminación. Repita este proceso hasta que DebugView ya no muestre ningún archivo faltante.Es útil configurar el filtro de mensajes para que no esté actualizado desde el botón de la barra de herramientas DebugView o la opción Editar → Filtro / Resaltar . De esa manera, los únicos mensajes que muestra son los que tienen una cadena `` no actualizada ''.
Tenía muchos archivos que eran referencias innecesarias y al eliminarlos todos solucionaron el problema siguiendo los pasos anteriores.
Segunda forma de encontrar todos los archivos que faltan a la vez
Hay una segunda forma de encontrar todos estos archivos a la vez, pero implica (a) control de origen y (b) integración de este con Visual Studio 2010. Con Visual Studio 2010 , agregue su proyecto a la ubicación deseada o ubicación ficticia en el origen controlar. Intentará agregar todos los archivos, incluidos los que no existen en el disco pero que se mencionan en el archivo del proyecto. Vaya a su software de control de fuente como Perforce , y debería marcar estos archivos que no existen en el disco en un esquema de color diferente. Perforce los muestra con un candado negro en ellos. Estas son tus referencias faltantes. Ahora tiene una lista de todos ellos, y puede eliminarlos de su archivo de proyecto usando el Bloc de notas y su proyecto no se quejará por estar desactualizado .
fuente
Para mí fue la presencia de un archivo de encabezado no existente en "Archivos de encabezado" dentro del proyecto. Después de eliminar esta entrada (clic con el botón derecho> Excluir del proyecto) se vuelve a compilar por primera vez, luego directamente
========== Compilación: 0 exitoso, 0 fallido, 5 actualizado, 0 omitido ==========
y no se hizo ningún intento de reconstrucción sin modificación. Creo que es un check-before-build implementado por VS2010 (no estoy seguro si está documentado, podría estarlo) que activa el indicador "AlwaysCreate".
fuente
Si está utilizando el comando MSBuild de línea de comando (no el IDE de Visual Studio), por ejemplo, si está apuntando a AppVeyor o simplemente prefiere la línea de comando, puede agregar esta opción a su línea de comando MSBuild:
Como se documenta aquí (advertencia: verbosidad habitual de MSDN). Cuando termina la acumulación, buscar la cadena
will be compiled
en el archivo de registro creado durante la construcción,MyLog.log
.fuente
Estoy usando Visual Studio 2013 Professional con la Actualización 4, pero no encontré resolución con ninguna de las otras sugerencias, sin embargo, logré resolver el problema para mi proyecto de Equipo.
Esto es lo que hice para causar el problema:
Esto es lo que hice para resolver el problema:
Si este es el caso, entonces asegúrese de que está eliminando el archivo fantasma en lugar del archivo real que desea mantener en el proyecto.
fuente
Tuve este problema y encontré esto:
http://curlybrace.blogspot.com/2005/11/visual-c-project-continually-out-of.html
fuente
En mi caso, uno de los proyectos contiene múltiples archivos IDL. El compilador MIDL genera un archivo de datos DLL llamado 'dlldata.c' para cada uno de ellos, independientemente del nombre del archivo IDL. Esto provocó que Visual Studio compilara los archivos IDL en cada compilación, incluso sin cambios en ninguno de los archivos IDL.
La solución consiste en configurar un archivo de salida único para cada archivo IDL (el compilador MIDL siempre genera dicho archivo, incluso si se omite el modificador / dlldata):
fuente
Pasé muchas horas arrancándome el pelo por esto. El resultado de la compilación no fue consistente; diferentes proyectos estarían "no actualizados" por diferentes razones de una compilación a la siguiente compilación consecutiva. Finalmente encontré que el culpable era DropBox (3.0.4). Junto mi carpeta de origen desde ... \ DropBox en mi carpeta de proyectos (no estoy seguro si esta es la razón), pero DropBox de alguna manera "toca" los archivos durante una compilación. Sincronización pausada y todo está constantemente actualizado.
fuente
Existen varias razones potenciales y, como se señaló, primero debe diagnosticarlas configurando la verbosidad de MSBuild en 'Diagnóstico'. La mayoría de las veces, la razón indicada se explica por sí misma y usted podría actuar de inmediato, PERO ocasionalmente MSBuild afirma erróneamente que algunos archivos se modifican y deben copiarse.
Si ese es el caso, deberá deshabilitar el túnel NTFS o duplicar su carpeta de salida en una nueva ubicación. Aquí está en más palabras.
fuente
Esto me sucedió varias veces y luego desapareció, antes de que pudiera entender por qué. En mi caso fue:
¡Hora del sistema incorrecta en la configuración de arranque dual!
Resulta que mi arranque dual con Ubuntu fue la causa raíz. He sido demasiado flojo para arreglar Ubuntu y dejar de jugar con mi reloj de hardware. Cuando inicio sesión en Ubuntu, el tiempo salta 5 horas hacia adelante.
Por mala suerte, construí el proyecto una vez, con la hora incorrecta del sistema, luego corrigí la hora. Como resultado, todos los archivos de compilación tenían marcas de tiempo incorrectas, y VS pensaría que todos están desactualizados y reconstruiría el proyecto.
fuente
La mayoría de los sistemas de compilación utilizan marcas de tiempo de datos para determinar cuándo deben ocurrir las reconstrucciones (la marca de fecha / hora de cualquier archivo de salida se compara con la última hora modificada de las dependencias), si alguna de las dependencias es más reciente, el destino se reconstruye.
Esto puede causar problemas si alguna de las dependencias de alguna manera obtiene una marca de tiempo de datos no válida, ya que es difícil que la marca de tiempo de cualquier salida de compilación supere la marca de tiempo de un archivo supuestamente creado en el futuro: P
fuente
Para mí, el problema surgió en un proyecto de WPF donde algunos archivos tenían su propiedad 'Build Action' establecida en 'Resource' y su 'Copy to Output Directory' establecido en 'Copy if newer'. La solución parecía ser cambiar la propiedad 'Copiar al directorio de salida' a 'No copiar'.
msbuild sabe que no debe copiar los archivos 'Recursos' a la salida, pero aún así activa una compilación si no están allí. Tal vez eso podría considerarse un error?
¡Es enormemente útil con las respuestas aquí que sugieren cómo hacer que msbuild derrame los granos sobre por qué sigue construyendo todo!
fuente
Si cambia los argumentos del comando de depuración para el proyecto, esto también desencadenará que el proyecto necesita un mensaje reconstruido. Aunque el objetivo en sí no se ve afectado por los argumentos de depuración, las propiedades del proyecto han cambiado. Sin embargo, si reconstruye, el mensaje debería desaparecer.
fuente
Tuve un problema similar con Visual Studio 2005, y mi solución consistió en cinco proyectos en la siguiente dependencia (primero construida en la parte superior):
Estaba descubriendo que el proyecto Video_Codec quería una compilación completa incluso después de una limpieza completa y luego la reconstrucción de la solución.
Lo arreglé asegurándome de que el
pdb
archivo de salida de C / C ++ y el enlazador coincidía con la ubicación utilizada por los otros proyectos de trabajo. También encendí RTTI.fuente
Otro en Visual Studio 2015 SP3, pero he encontrado un problema similar en Visual Studio 2013 hace unos años.
Mi problema fue que de alguna manera se usó un archivo cpp incorrecto para los encabezados precompilados (por lo que tenía dos archivos cpp que crearon los encabezados precompilados). Ahora, ¿por qué Visual Studio cambió los indicadores en el cpp incorrecto para 'crear encabezados precompilados' sin mi solicitud? No tengo idea, pero sucedió ... ¿tal vez algún complemento o algo así?
De todos modos, el archivo cpp incorrecto incluye el archivo version.h que se cambia en cada compilación. Entonces, Visual Studio reconstruye todos los encabezados y, por eso, todo el proyecto.
Bueno, ahora ha vuelto al comportamiento normal.
fuente
Tenía un proyecto VC ++ que siempre estaba compilando todos los archivos y que otras personas habían actualizado previamente de VS2005 a VS2010. Descubrí que todos los archivos cpp en el proyecto, excepto StdAfx.cpp, estaban configurados para crear (/ Yc) el encabezado precompilado. Cambié esto para que solo StdAfx.cpp estuviera configurado para crear el encabezado precompilado y el resto estaba configurado para Usar (/ Yu) el encabezado precompilado y esto solucionó el problema para mí.
fuente
Estoy en Visual Studio 2013 y acabo de actualizarme a la actualización de Windows 10 de mayo de 2019 y la compilación de repente tuvo que rehacerse cada vez, independientemente de los cambios. Intenté cambiar el nombre del pch a ProjectName en lugar de TargetName, busqué los archivos faltantes con el registro detallado y ese script de Python, pero al final fue mi tiempo que no se sincronizó con los servidores de MS (por milisegundos).
Lo que resolvió esto para mí fue
Ahora mis proyectos no necesitan ser recompilados sin ninguna razón.
fuente
Creo que ha colocado una nueva línea u otro espacio en blanco. Retíralo y presiona F5 nuevamente.
fuente
Los proyectos .NET siempre se vuelven a compilar independientemente. Parte de esto es mantener el IDE actualizado (como IntelliSense). Recuerdo haber hecho esta pregunta en un foro de Microsoft hace años, y esta fue la respuesta que me dieron.
fuente