2008-10-15 4 views
5

Tengo una solución que contiene varios proyectos. Solo estoy cambiando el código en una de ellas, pero cada vez que presiono Ctrl + Shift + B, Visual Studio reconstruye todas las demás.Encontrar dependencias obsoletas o faltantes o archivos de salida en una solución de Visual C++ (o: ¿Por qué VS insiste en reconstruir proyectos sin cambios?)

Quiero que construya los otros proyectos, así que esto es bueno. Lo que no es bueno es que, normalmente, vería que no había nada que hacer. Tengo una dependencia insegura en alguna parte, así que esto no está funcionando.

¿Hay alguna herramienta o macro (o modificador) que explore el árbol de dependencias y me diga qué archivos faltan o están desactualizados, para que pueda detenerlo?

Sé que puedo resolver este caso específico, al (por ejemplo) tocar todos los archivos del proyecto.

Desafortunadamente, a menudo he visto esta situación cuando un archivo está configurado para producir un archivo de salida (por ejemplo, un archivo IDL está configurado para generar una biblioteca de tipos, pero no contiene un bloque de 'biblioteca', por lo que nunca crees un TLB).

Esto no se resolvería tocando todos los archivos del proyecto, entonces estoy buscando algo más general para agregar a mi caja de herramientas personal que me dirá fácilmente por qué se está reconstruyendo un archivo, ya sea porque es más antiguo que una dependencia, o porque el proyecto está mal configurado para esperar un archivo de salida que nunca se producirá.

+0

Gracias por la punta de una TLB sin un bloque de biblioteca! Nunca lo hubiera encontrado por mi cuenta. – thehouse

Respuesta

0

Si bien no responder directamente a la pregunta: "¿hay una herramienta que va a trabajar esto para mí?", Me encontré con el problema específico mediante el uso de SysInternals Process Monitor:

El proyecto se ha configurado con/analizar, que requiere Visual Studio Team Edition, pero la versión en esta PC es Visual Studio Professional, que no es compatible. Desafortunadamente, parece haber un error en Visual Studio, donde cree que se debe crear el archivo .pchast, aunque no tenga forma de hacerlo. He planteado esto en Connect.

Creo que podría escribir una macro para Visual Studio Professional que, si/analizar está activada, simplemente crea un archivo .pchast vacío al final de la construcción ...

0

No es que lo haya encontrado. Si sabe que un proyecto no va a cambiar a menudo, puede decirle al Administrador de Configuración que no lo construya. (Haga clic derecho en la Solución y seleccione Configuration Management)

0

Hasta donde yo sé ctrl + shift + b está por defecto ligado a BuildSolution, por lo que ese sería el motivo por el que se están construyendo todos sus proyectos. No estoy seguro de qué otra cosa podría usar excepto para hacer clic derecho en el proyecto y presionar compilación :)

+0

Todos los proyectos se están construyendo, esto es lo que quiero. Por lo general, el verificador de dependencias hará que el compilador no haga nada en realidad. Esto no está funcionando. –

0

Es posible que desee comprobar en Herramientas> Opción> Proyectos y soluciones y comprobar si su opción está configurada en Crear solo proyecto de inicio y dependencias en lugar de toda la solución.

O en lugar de utilizar ctrl + camisa + b simplemente debe presionar F6 en el proyecto que desea construir :)

1

Si he entendido bien, usted podría resolver este tocando todos los archivos de su proyecto. Puede ser causado por un archivo fuente que tenga un tiempo de última modificación en el futuro.

Editar:

Sé que puedo resolver este caso específico, por (por ejemplo) que toca todos los archivos del proyecto, pero me gustaría añadir algo a mi caja personal de los trucos que Puedo usarlo en el futuro, en el caso general.

Estoy confundido - ¿cuál es el 'caso general' de este problema?

+0

He actualizado la pregunta original para que quede más claro (con suerte) –

+0

La reparación del título también puede ayudarlo a obtener respuestas relevantes. –

+0

Buen punto. Yo haré eso. –

0

Puede usar shift + F6 para compilar solo el proyecto actual.

1

En Opciones/Proyectos y soluciones/Construir y ejecutar, suba el nivel de detalle de la salida de compilación del proyecto MSBuild. Debería darte una idea de por qué está reconstruyendo todos los proyectos.

+0

Es un proyecto de C++, la configuración de verbosidad de MSBuild no parece tener ningún efecto. –

+0

Extraño, estaba bastante seguro de haber usado esto en el pasado para descubrir una dependencia en C++, pero a su derecha, solo funciona para los lenguajes de DotNet. –

Cuestiones relacionadas