Team Build : error MSB3554 - The fully qualified file name must be less than 260 characters
Lorsque l’on utilise Team Build pour compiler nos projets, il se peut que l’on tombe sur le problème suivant :
error MSB3554: Cannot write to the output file XXX. The specified path, file name, or both are too long. The fully qualified file name must be less than 260 characters, and the directory name must be less than 248 characters.
Il ne s’agit en aucun cas d’un bug de TFS ou de Visual Studio, mais d’une limitation de windows. En effet, l’interface de windows ne permet pas d’avoir un fichier dont le nom complet a une taille supérieur à 260 caractères (File Names, Paths, and Namespaces (MSDN)).
Par défaut, lorsque l’on configure un serveur de build, le workspace utilisé est C:\Documents and Settings\tfsBuild\Local Settings\Temp\ProjectName\, si l’on a un projet avec des namespaces conséquent, on arrive rapidement à cette taille limite.
La solution est donc de changer le chemin du workspace par défaut. Pour cela dans Team Explorer, faites un click droit sur le noeud “Builds” puis “Manage Build Agents …”
Dans le champ “Working Directory” au lieu de $(Temp)\$(BuildDefinitionPath) utilisez C:\Build\$(BuildDefinitionId). Ainsi, le workspace sera c:\Build\123 au lieu de C:\Documents and Settings\tfsBuild\Local Settings\Temp\ProjectName\ soit une cinquantaine de caractères de gagnés.
Pour information, voici la description des 2 variables utilisées.
- $(BuildDefinitionId) - a 32-bit identifier for a definition that uniquely identifies it for the Team Foundation Server
- $(BuildDefinitionPath) - a path of the form <Team Project>\<Definition Name>
Vous pouvez également utiliser n’importe quelle variable d’environnement Windows.