Observations:
Sur notre serveur de génération Jenkins, nous voyions beaucoup de processus msbuild.exe (~ 100) traîner après la fin du travail, avec une utilisation de mémoire d’environ 20 Mo et une activité de 0% de l’UC.
Les constructions utilisant différentes versions de stylecop étaient par intermittence en échec:
workspace\packages\StyleCop.MSBuild.4.7.41.0\tools\StyleCop.targets(109,7):
error MSB4131: The "ViolationCount" parameter is not supported by the "StyleCopTask" task.
Verify the parameter exists on the task, and it is a gettable public instance property.
Nuget.exe était par intermittence sortant avec l'erreur de violation d'accès suivante (0x0000005):
.\workspace\.nuget\nuget install .\workspace\packages.config -o .\workspace\packages"
exited with code -1073741819.
MsBuild a été lancé de la manière suivante via un travail Jenkins Matrix, avec 'BuildInParallel' activé:
`msbuild /t:%Targets% /m
/p:Client=%Client%;LOCAL_BUILD=%LOCAL_BUILD%;BUILD_NUMBER=%BUILD_NUMBER%;
JOB_NAME=%JOB_NAME%;Env=%Env%;Configuration=%Configuration%;Platform=%Platform%;
Clean=%Clean%; %~dp0\_Jenkins\Build.proj`
Après beaucoup de fouilles et d’essais sans suite, j’ai finalement créé une nouvelle solution minimale reproduisant le problème sans autre solution. sur. Le problème s’est révélé être dû à la parallélisation multi-cœur de msbuild - le paramètre 'm'.
Les messages suivants ont été utiles:
Le correctif:
set MSBUILDDISABLENODEREUSE=1
au fichier de commandes qui lance msbuild/m:4 /nr:false
J'ai eu le même problème. Une ancienne référence que j'ai trouvée était dans les fichiers csproj
<PropertyGroup>
<StyleCopMSBuildTargetsFile>..\packages\StyleCop.MSBuild.4.7.48.0\tools\StyleCop.targets</StyleCopMSBuildTargetsFile>
De plus, j'ai supprimé l'intégralité du dossier "Packages" qui se trouve dans le même dossier que le fichier sln après avoir fermé Visual Studio. Cela a amené VS à reconstruire le dossier et à lâcher le cache de l'ancienne version de stylecop
J'ai eu le même problème pendant un certain temps, les builds prenaient plus de 6 minutes à terminer après quelques recherches. J'ai trouvé notre erreur de réutilisation des nœuds. Nous avons donc ajouté/m: 4/nr: false en corrigeant mon problème immédiatement.