¿Cómo puedo hacer que TeamCity aproveche el soporte de compilación incremental de MSBuild?

Estoy configurando TeamCity (migrando de CruiseControl.NET) y estoy luchando para lograr que realice construcciones incrementales a través de MSBuild.

Tengo un pequeño archivo .proj que contiene un script de compilación básico para invocar una compilación de mi solución con algunos parámetros incluidos en TeamCity. Cuando invoco el script manualmente, MSBuild'sConstrucción incremental las características se activan y omiten la construcción completamente en las siguientes ejecuciones

Cuando se llama a este script a través de Team City, el registro de compilación muestra el resultado de una compilación limpia cada vez. He observado el directorio de trabajo durante las compilaciones y puedo ver que el resultado de la compilación anterior no ha ido a ninguna parte.

También llamé manualmente la secuencia de comandos de compilación desde ese directorio enviando el servidor y ejecutando MSBuild desde el símbolo del sistema. Ejecutarlo de esta manera dispara las compilaciones incrementales esperadas después de la primera invocación.

Incluso cuando se inicia la compilación desde el panel de control sin cambios realizados, se produce una reconstrucción completa.

No puedo identificar la causa, pero parece que algo le está dando a MSBuild la impresión de que está recibiendo nuevos cambios y que está haciendo una reconstrucción en cada ejecución. No puedo ver mucho en la documentación de TeamCity que explique esto; mi expectativa es que si no hay cambios en el sistema de control de origen, no se actualizará la carpeta de trabajo.

¿TeamCity está pasando algún parámetro al proceso de construcción que desencadena una reconstrucción? ¿Puedo ver estos parámetros?

Habiendo examinado un registro detallado de MSBuild (/v:d interruptor de línea de comando), la razón por la que se está produciendo una reconstrucción completa se debe al archivo.NETFramework,Version=v4.0.AssemblyAttributes.cs siendo actualizado en el<Agent>\temp\buildTmp Directorio en cada compilación.

Este archivo se encuentra normalmente en%TMP%\.NETFramework,Version=v4.0.AssemblyAttributes.cs; TeamCity está cambiando la variable de entorno del directorio temporal local para hacer referencia a la carpeta temporal del agente. Desafortunadamente, este archivo es creado por elMicrosoft.Common.targets parte del proceso de construcción cuando está ausente. La eliminación del archivo "temporal" antes de cada compilación hace que se cree cada compilación y se hace referencia dinámicamente en la compilación de cada archivo de proyecto.

Necesito encontrar una manera de evitar que este archivo se vuelva a crear en cada compilación.

Respuestas a la pregunta(3)

Su respuesta a la pregunta