2012-02-23 10 views
8

Como todos sabemos, VS2010 tiene una actualización importante de su sistema de compilación, que se basa en MSBuild.
De acuerdo con los representantes de MS (véanse los comentarios en Visual Studio 2010 always rebuild project after hibernation/restart of computer) MSBuild ahora se inyecta en otras herramientas (como compiladores C++, enlazadores, etc.) para conocer las dependencias de un destino.
Uno de los inconvenientes de este enfoque es que ahora su proyecto puede ser reconstruida de manera forzada debido a modificaciones en los archivos irrelevantes :(
En mi caso es C:\PROGRAMDATA\NVIDIA CORPORATION\DRS\NVDRSDB0.BIN, que se cambia periódicamente por el servicio de actualización de NVIDIA (Windows 7 32- bits).VS2010 reconstruye el proyecto C++ debido a archivos irrelevantes modificados

he descubierto que girando opciones VS2010 "proyecto MSBuild verbosidad resultados de generación" y "MSBuild proyecto de registro de generación de archivos verbosidad" a " de diagnóstico".
Después de que yo era capaz para ver la causa de el tema de la ventana de generación de salida:

Task "CL" (TaskId:55) 
    Read Tracking Logs: (TaskId:55) 
    ..\..\temp\Release\Editor\cl.read.1.tlog (TaskId:55) 
    Outputs for E:\USERS\A.USER.ORG\DEVEL\EDITOR\STDAFX.CPP: (TaskId:55) 
E:\USERS\A.USER.ORG\DEVEL\TEMP\RELEASE\EDITOR\STDAFX.OBJ (TaskId:55) 
    C:\PROGRAMDATA\NVIDIA CORPORATION\DRS\NVDRSDB0.BIN was modified at 23-Feb-12 12:08:20. (TaskId:55) 
stdafx.cpp will be compiled. (TaskId:55) 
... 
Tracking command: (TaskId:55) 
C:\Program Files\Microsoft SDKs\Windows\v7.0A\bin\NETFX 4.0 Tools\Tracker.exe ... stdafx.cpp /clr:nostdlib (TaskId:55) 
stdafx.cpp (TaskId:55) 
Done executing task "CL". (TaskId:55) 

Una de las soluciones es añadir los archivos irrelevantes a C++ lista ignorar:

<ItemGroup> 
    <ClNoDependencies Include="NVDRSDB0.BIN" /> 
    <ClNoDependencies Include="C:\PROGRAMDATA\NVIDIA CORPORATION\DRS\NVDRSDB0.BIN" /> 
</ItemGroup> 

Desafortunadamente esto no ayuda :(Y yo no Todavía no compruebas cómo funciona este truco en otras PC, donde tales archivos no existen.

Entonces la pregunta es: ¿Alguien es consciente de la solución de trabajo para este problema?

No intenté instalar SP1 para VS2010: según los entusiastas, este paso tampoco ayuda.
Deshabilitar el servicio de actualización de NVIDIA probablemente sea útil (dejará de actualizar el archivo), pero hay o puede haber otro software que no se pueda desactivar de esta manera (antivirus, otras utilidades, etc.).
preguntas Véase también relacionados:

Respuesta

1

que tienen este mismo problema, excepto que el archivo "modificado" en mi caso se

C:\PROGRAMDATA\SOPHOS\SOPHOS ANTI-VIRUS\CONFIG\CONFIG.BOPS 

Microsoft ha admitido que hay un error (que se fijará en la próxima versión) y sugerencias para solucionar

http://connect.microsoft.com/VisualStudio/feedback/details/715572/unexpected-rebuild-of-projects

http://connect.microsoft.com/VisualStudio/feedback/details/649139/vs2010-does-complete-rebuild-based-on-completely-unrelated-file

pero ninguno de ellos ha trabajado para mí hasta ahora. Todavía estoy tratando de lodo con mi archivo

C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\Platforms\Win32\Microsoft.Cpp.Win32.targets 

y añadir algo como lo siguiente a mis hojas de propiedades

<ItemGroup> 
    <ClNoDependencies Include="C:\PROGRAMDATA\SOPHOS\SOPHOS ANTI-VIRUS\CONFIG\CONFIG.BOPS"/> 
</ItemGroup> 

pero no he tenido suerte hasta ahora.¿Quizás pueda hacer que este trabajo práctico funcione para usted? (¡Déjeme saber si lo hace!)

+0

gracias por compartir la información. Parece que había visto algo similar en el foro de un foro de Microsoft. De todos modos, el enfoque con ClNoDependencies no funciona en VS2010 ... y la próxima versión mencionada probablemente sea VS2012, que está saliendo a la luz. Espero que el problema finalmente se solucione, entonces :) – AntonK

+0

De hecho, tengo esta solución para trabajar ... principalmente. El truco consistía en agregar la definición de "sin dependencias" a cada etapa: compilar, vincular, crear recursos, insertar el manifiesto (puedo haber olvidado uno). Llegué tan lejos como los primeros, y vi que mis reconstrucciones "extra" solo realizaban los recursos e integraban los pasos manifiestos. Entonces ... casi estaba allí, y luego mi departamento de TI nos hizo resolver el problema volviendo a la versión anterior de la aplicación antivirus de Sophos, por lo que todo el problema desapareció. – aldo

+1

Actualización: Sophos implementó una corrección en una versión posterior que soluciona este problema. Ya no tengo este problema con la versión actual de Sophos y Visual Studio 2010. – aldo

0

Tuvimos el mismo problema con el archivo Sophos CONFIG.BOPS. Tenemos un equipo grande y nuestra solución tiene más de 80 proyectos, por lo que la solución descrita por otros no nos atraía. Tomé un enfoque que funcionó maravillosamente. Algunos pueden decir que es un truco total, lo cual admitiré que es, pero es increíblemente simple y funciona hasta que Microsoft solucione esto.

Escribí una pequeña aplicación de bandeja de escritorio en C# que supervisa el archivo CONFIG.BOPS, y cada vez que la marca de tiempo cambia, la establece en una fecha anterior usando File.SetLastWriteTime sin modificar el contenido del archivo. La aplicación debe ejecutarse como administrador en Windows 7, pero eso está bien para nosotros, ya que todos nuestros empleados tienen derechos de administrador para sus PC. No tenemos el problema NVDRSDB0.BIN, pero sospecho que también podría funcionar para ese caso.

+0

¿Te importa compartir el código/aplicación para ahorrar tiempo? – Thomas

0

Pude deshacerme de este problema agregando C: \ PROGRAMDATA \ NVIDIA CORPORATION \ DRS \ a mi hoja de propiedades de usuario Directorios de VC++/Excluir directorios.

Para editar este archivo, abra View-> Property Manager debajo de cada proyecto/configuración.

Si no desea hacer todo este sistema, puede crear una nueva hoja de propiedades y agregarla solo a los proyectos que necesita configurar. Puede seleccionar de forma múltiple todos los proyectos que necesita para este conjunto en el Administrador de propiedades y hacer clic con el botón secundario en> Agregar nueva hoja de propiedades.

Cuestiones relacionadas