Tenemos un proyecto donde los archivos .js y .css se comprimen con el compresor YUI. Una muy buena herramienta. También usamos TFS 2010 como un servidor de compilación con compilaciones nocturnas que también se implementa en nuestro sitio web de desarrollo.Compresor YUI y TFS compilación
El problema que estamos teniendo es que el archivo YUI genera un problema de "Acceso denegado". Esto se debe a que ya se generó dicho archivo desde antes, y que es parte del proyecto, lo que lo hace solo de lectura. Sin embargo, podemos eliminarlo del proyecto y debería crearlo bien. El problema entonces es que el archivo generado no se incluye en el paquete de despliegue real.
Localmente no tengo ningún problema porque tengo una secuencia de comandos de comandos de eventos de compilación previa, que elimina los archivos existentes. Esto aparentemente no funciona en el servidor de compilación. Tal vez el usuario de contexto tfs no tenga permiso, no lo sé.
¿Hay alguien que podría haber tenido problemas similares?
Actualización 21/11: La pregunta puede ser un tanto vaga. Para simplificar, digamos que solo quiero que esto funcione como lo hace localmente:
IF NOT $(ConfigurationName) == DEBUG DEL "$(ProjectDir)Styles\styles.min.css
IF NOT $(ConfigurationName) == DEBUG DEL "$(ProjectDir)JavaScript\script.min.js
Esto se define en la línea de comandos de eventos de pre-construcción, bajo Propiedades del proyecto -> Construir eventos.
El script elimina los archivos antes de la generación del archivo YUI, y por lo tanto no hay ningún archivo que sobrescribir. ¿Podría ser tan simple que el contexto de usuario que ejecuta el TFS-build tiene derechos de modificación insuficientes?
SOLUCIÓN:
Terminamos con el código siguiente en el evento de pre-construcción:
attrib -r "$(ProjectDir)Styles\styles.min.css"
attrib -r "$(ProjectDir)JavaScript\script.min.js"
IF NOT $(ConfigurationName) == Debug $(MSBuildBinPath)\msbuild.exe "$(ProjectDir)Config\MSBuild\BuildSettings.xml"
/Mattias
Creo que su primer paso sería leer el archivo de registro de compilación de TFS y ver si su tarea de precompilación se está ejecutando o no. Considere agregar un 'attrib -r' al script del evento prebuild para desactivar el indicador de solo lectura del archivo que se generará. –
Todavía no entiendo su pregunta ... ¿Está intentando averiguar por qué el paso de preconstrucción no se ejecuta en el servidor de compilación TFS? –
Me preguntaba cómo abordar el problema de la autogeneración de archivos como parte de la compilación, cuando los archivos ya existen (y de solo lectura). Tal vez adoptemos la misma técnica de usar un evento de preconstrucción para eliminarlos a todos. – GarethOwen