tfs - argumentos - msbuild reduce verbosity
TFS MSBuild: $(ProjectDir) en blanco o al azar (5)
Creo que el problema es que el espacio de trabajo del servidor de compilación probablemente no se haya inicializado correctamente.
Tengo un archivo vcproj que incluye un evento simple de preconstrucción en la línea de:
Helpertask.exe $(ProjectDir)
Esto funciona bien en las PCs de desarrollo, pero cuando la solución se basa en nuestro servidor de compilación TFS 2008 bajo MSBuild, $ (ProjectDir) está en blanco o apunta a una carpeta no relacionada en el servidor.
Hasta ahora, la mejor solución que he logrado es codificar las rutas de desarrollador y servidor en su lugar:
if exist C:/DeveloperCode/MyProject HelperTask.exe C:/DeveloperCode/MyProject
if exist D:/BuildServerCode/MyProject HelperTask.exe D:/BuildServerCode/MyProject
Este truco funciona en los pasos posteriores a la construcción, pero no funciona para un paso previo a la compilación (¡la tarea de preconstrucción ahora no hace nada bajo MSBuild!)
¿Tiene alguna idea para una solución o una solución? ¡Me queda muy poco pelo!
Seguí teniendo problemas con esto, probé muchos enfoques diferentes, pero todos fallaron de maneras misteriosas.
Una vez que $ (ProjectDir) comenzó a comportarse correctamente otra vez, el paso previo a la construcción dejó de ejecutar el comando (agregué los comandos de eco arriba y abajo; ambos fueron ejecutados, pero el programa no fue entre ellos. No hubo errores ni resultados de ningún tipo fueron generados para indicar por qué falló).
No sé si este es un servidor dudoso si MSBuild se está riendo.
Me he dado por vencido ahora. Le di al servidor de creación una gran patada y cambié de táctica: ahora ejecutamos esta herramienta fuera de línea (manualmente) y verificamos los resultados para que el servidor de compilación lo use. Tanto para una compilación automatizada :-( Si solo MSBuild ejecutara las soluciones de la misma forma que Visual Studio, es enloquecedor que configure el entorno de forma completamente diferente (diferentes rutas que salen de las variables de solución, ouptus redirigidas a diferentes carpetas para no puedes encontrarlos donde se supone que deben estar, etc.)
Creo que su problema puede estar relacionado con cómo se han inicializado los artículos. Un atributo de incluir elementos se evalúa al comienzo de una compilación. Por lo tanto, si depende de los archivos que se crean en el proceso de compilación, debe declararlos como elementos dinámicos. Los elementos dinámicos son aquellos definidos dentro de un destino, o mediante el uso de la tarea CreateItem. Lo he detallado en mi blog MSBuild: Evaluación de artículos y propiedades .
Sayed Ibrahim Hashimi
Mi libro: dentro del motor de compilación de Microsoft: usando MSBuild y Team Foundation Build
Bifurqué un proyecto existente y $ (ProjectDir) guardé el directorio anterior en el código recién ramificado. Pero eso es porque tuve algunos errores de compilación. Una vez que todos los proyectos de la solución se compilaron sin errores, $ (ProjectDir) cambió a la ruta correcta.
Carlos A Merighe
$ (MSBuildProjectDirectory) funcionó para mí