J'utilise TeamCity qui à son tour invoque msbuild (.NET 4). J'ai un problème étrange en ce qu'une fois la génération terminée (et cela ne semble pas avoir d'importance si la construction a réussi ou non), msbuild.exe reste ouvert et verrouille l'un des fichiers, ce qui signifie que chaque fois que TeamCity essaie pour effacer son répertoire de travail, il échoue et ne peut pas continuer.
Cela se produit presque à chaque fois.
Je suis vraiment perdu sur celui-ci, je vais donc essayer de fournir autant de détails que possible.
/m
paramètre de ligne de commande (ce qui signifie utiliser plusieurs cœurs)External Tools\Telerik\Telerik.Reporting.Dll
. (Il existe plusieurs autres fichiers .DLL inclus dans le External Tools
dir dans une structure de chemin similaire qui ne cause jamais ce problème). Actuellement, c'est avec la version d'essai des rapports Telerik, au cas où cela ferait une différence.msbuild.exe *32
processus répertoriés dans le Gestionnaire des tâches: je crois qu'il y en a 7. En utilisant Process Explorer, ils ressemblent tous à des processus de niveau supérieur (pas de parents). Ils utilisent tous de 20 à 50 Mo de RAM et 0,0% de CPU.svn:mime-type = application/octet-stream
Quelqu'un a-t-il déjà rencontré cela auparavant?
Utilisez msbuild
avec /nr:false
.
En bref: MSBuild essaie de faire beaucoup de choses pour être rapide, en particulier avec les builds parallèles. Il générera beaucoup de "nœuds" - des processus msbuild.exe individuels qui peuvent compiler des projets, et comme les processus prennent un peu de temps à tourner, une fois la construction terminée, ces processus traînent (par défaut, pendant 15 minutes, je pense ), de sorte que s'il vous arrive de reconstruire bientôt, ces nœuds peuvent être "réutilisés" et économiser le coût de configuration du processus. Mais vous pouvez désactiver ce comportement en désactivant nodeReuse avec l'option de ligne de commande susmentionnée.
Voir également:
Pour désactiver la réutilisation des nœuds dans Visual Studio, vous devez utiliser une variable d'environnement:
MSBUILDDISABLENODEREUSE=1