Exigence non satisfaite de la ville d'équipe: MSBuildTools12.0_x86_Path existe

117

J'ai une installation TeamCity sur une machine Windows x32 Server2008. J'ai exécuté l'installation Web .net 4.5. J'ai également copié les fichiers de ma machine x64 sur la base de cet article afin de ne pas avoir besoin d'installer vs2012 (cependant, j'ai changé le chemin pour supprimer x86 sur la machine 32 bits):

MSBuild dans la solution TeamCity de Visual Studio 2012

Je n'arrive pas à convaincre l'agent local d'exécuter la version que j'ai configurée pour msbuild sur un projet vs2012 ou vs2010. Je continue de recevoir:

Exigences non satisfaites: MSBuildTools12.0_x86_Path existe

J'ai redémarré le serveur plusieurs fois et également redémarré l'agent. J'ai essayé de jouer un peu avec les variables de chemin, mais je ne peux pas comprendre ce que je manque. J'ai également regardé dans les paramètres de configuration et je peux les voir:

MSBuildTools2.0_x86_Path C: \ Windows \ Microsoft.NET \ Framework \ v2.0.50727

MSBuildTools3.5_x86_Path C: \ Windows \ Microsoft.NET \ Framework \ v3.5

MSBuildTools4.0_x86_Path C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319

Comment puis-je obtenir 12,0 là-dedans?

archange76
la source
Vous rencontrez toujours des problèmes avec TeamCity?
Daniel Hollinrake
Le temps qu'il m'a fallu pour comprendre cela m'a obligé à mettre le projet en attente. J'espère y revenir au printemps.
archange76
Il m'a fallu un certain temps pour que tout fonctionne. Je pense que l'essentiel était d'installer MSBuild et de mettre à jour Web Deploy.
Daniel Hollinrake

Réponses:

149

J'avais besoin d'installer MSBuild séparément, puis après le redémarrage de l'agent, la variable était là.

(De l'article MSDN) MSBuild est maintenant installé dans le cadre de Visual Studio plutôt que dans le cadre du .NET Framework. Le numéro de version actuel de MSBuild est 12.0. Si vous souhaitez installer MSBuild séparément, téléchargez le package d'installation à partir de MSBuild Download.

edit: le lien de réponse a été rompu. Voici le lien pour Microsoft Build Tools 2015 (le plus récemment jusqu'à aujourd'hui): https://www.microsoft.com/en-us/download/details.aspx?id=48159

jmw
la source
8
Il convient de noter que vous aurez besoin de la version 4.5.1 du .NET Framework (disponible ici: microsoft.com/en-ca/download/details.aspx?id=40779 ) pour installer MSBuild12.0.
Brandon
37
Pour redémarrer l'agent: 1. Accédez au serveur de génération. 2. Exécutez services.msc à partir du menu Démarrer. 3. Recherchez l'agent TeamCity, arrêtez le service et redémarrez-le. Cela peut sembler évident pour les vétérinaires chevronnés de TeamCity, mais pas pour les nouveaux utilisateurs comme moi. :)
Chaim Eliyah
5
Bien que MS Build Tools 2013 soit installé, la variable MSBuildTools12.0_x86_Path n'est toujours pas définie et l'agent ne s'exécute pas. Existe-t-il un moyen de le définir manuellement?
bdaniel7
J'ai dû aller dans ce répertoire et exécuter vcvars64.bat: C: \ Program Files (x86) \ Microsoft Visual Studio 14.0 \ VC \ bin \ amd64 Ensuite, msbuild a fonctionné pour moi.
user8128167
5
Par défaut, lorsque j'ai utilisé la détection automatique du fichier sln et que ma solution était définie sur Visual Studio 2013. J'ai changé pour Visual Studio 2015 installé sur l'agent.
ptittof57 du
33

Réponse un peu tardive, mais si votre projet provient de VS 2012 et que vous utilisez l'étape de création de fichier de solution détectée automatiquement, la modification de cette étape et la sélection de «Microsoft Visual Studio 2012» dans la liste déroulante «Visual Studio» résout ce problème ainsi (et, à mon humble avis, plus correctement).

Harper Shelby
la source
2
Pas du tout en retard! J'ai eu ce problème aujourd'hui et le changement de la version VS vers VS 2015 s'est débarrassé du message des exigences non satisfaites
Sudhanshu Mishra
Cela a fonctionné pour moi nouveau serveur TeamCity 10 VS2015 (ancien projet de 2013)
Rippo
2
Oui, mon problème était que la mauvaise version de Visual Studio était "sélectionnée automatiquement" par Team City lors du choix de détecter automatiquement les étapes de construction à partir de l'option "Créer un projet à partir de l'URL", donc je suis simplement allé à l'étape de construction et j'ai changé le Version de Visual Studio pour résoudre ce problème. J'espère que les gens vérifieront votre réponse avant d'essayer d'installer des éléments dont ils n'auraient peut-être pas besoin dans la réponse de jmw.
starmandeluxe
18

J'ai eu le même problème et à la fin, il s'est avéré que mon étape de construction définie pour exécuter MSBuild était mal configurée.

Dans mon étape de construction MSBuild, le paramètre "MSBuild ToolsVersion" a été défini sur 12.0 (par défaut), ce qui conduit à l'erreur "Exigences non satisfaites: MSBuildTools12.0_x86_Path existe" sur mon système. Étant donné que je n'ai pas besoin du nouveau MSBuild 12.0 pour exécuter ma génération, j'ai modifié ce paramètre en 4.0 dans mon étape de génération. Cette version MSBuild est correctement installée sur mon système. Cela a résolu le problème pour moi.

Andreas Schuermann
la source
10

Je suis également un peu en retard à la fête, mais j'ai pensé partager ce qui suit au cas où cela aiderait une pauvre âme.

  • J'ai eu l'erreur mentionnée ci-dessus sur une nouvelle installation de TeamCity 8.1.4 sur une nouvelle boîte Windows Server 2012 R2
  • Suivez les instructions de ce fil et l'erreur est toujours apparue malgré de nombreux redémarrages et réinstallations.
  • J'ai remarqué que les informations sur l'agent telles que le système d'exploitation et le processeur n'apparaissaient pas sur la page des détails de l'agent. Cela indiquait que le problème n'était pas lié aux prérequis .NET et MSBUILD, mais était plutôt lié au fait que le service d'agent ne pouvait pas lire les informations sur la machine.
  • L'agent fonctionnait sous le compte d'un utilisateur (avec toutes les autorisations nécessaires selon la documentation TeamCity ). Mais je pensais voir ce qui se passerait si j'allais dans Outils d'administration> Services et changeais le compte du système Connexion au système local.
  • Redémarré le service de l'agent.
  • Grand succès.
Robert Hardy
la source
Changer l'agent pour qu'il s'exécute en tant que service local a également résolu ce problème pour moi. Je ne comprends pas pourquoi. J'ai ajouté l'utilisateur que j'utilisais au groupe d'administrateurs locaux pour voir s'il s'agissait d'un problème d'autorisations, mais cela n'a pas aidé;
user381624
8

MSBuild fait désormais partie de Visual Studio. Si vous devez installer les outils de build sur votre agent mais que vous ne souhaitez pas installer VS, vous devrez installer les nouveaux outils de build Microsoft qui sont disponibles à l' adresse http://www.microsoft.com/en-us/download/ details.aspx? id = 40760 .

Steve Bering
la source
1
Voir aussi: lien pour la version Build Tools 2015 (le lien mentionné est les outils 2013).
Jeroen
Et voici la version 2017 (Tools for Visual Studio 2017 -> Build Tools for Visual Studio 2017)
fuglede
5

Dans mon cas, seule une installation séparée de MSBuild pour VS2013 a aidé. (voici le lien - https://www.microsoft.com/en-us/download/confirmation.aspx?id=40760 ) Il a créé ce dossier L' C:\Program Files (x86)\MSBuild\12.0installation des outils MSBuild pour VS2015 a créé C:\Program Files (x86)\MSBuild\14.0ce dossier, et TC ne voulait pas utilise le.

miotis
la source
2

J'ai eu ce problème sur mon agent de build secondaire.

J'avais copié le dossier MSBuild du PC de l'agent de construction principal vers le PC de l'agent de construction secondaire (comme je l'ai fait avec certains fichiers Visual Studio comme décrit ici: MSBuild dans la solution TeamCity of Visual Studio 2012 ), plutôt que d'installer MSBuild.

Il semble cependant que les services de l'agent TeamCity vérifient le registre pour les entrées MSBuild au démarrage (il ne semble pas le faire avec les fichiers Visual Studio que je mentionne ci-dessus). Comme j'avais simplement copié les fichiers de l'autre PC, aucune entrée MSBuild pour la version 12.0 n'existait, donc TeamCity n'a pas découvert les fichiers MSBuild même s'ils étaient présents dans le dossier Program Files (x86) \ MSBuild.

Lorsque j'ai installé les outils Microsoft Build à partir du lien ci-dessus http://www.microsoft.com/en-us/download/details.aspx?id=40760 TeamCity a trouvé l'entrée v.12.0 dans le registre et l'agent a pu construire les mêmes projets que l'agent principal.

N'oubliez pas de redémarrer le service de l'agent TeamCity après avoir installé MS Build Tools.

Hildesheim
la source
1

Dans mon cas, j'ai TeamCity Professional 2018.1 sur Windows 2016 Server. J'ai téléchargé les outils de génération pour Visual Studio 2017 à partir d'ici: https://visualstudio.microsoft.com/downloads/ et j'ai sélectionné toutes les options pour les outils de génération. Après l'installation, j'ai ajouté MSBuild à la variable d'environnement globale PATH. C: \ Program Files (x86) \ Microsoft Visual Studio \ 2017 \ BuildTools \ MSBuild \ 15.0 \ Bin dans mon cas.

DerSkythe
la source
0

Dans mon cas, c'était une nouvelle machine sans studio visuel installé et je viens de restaurer Teamcity à partir d'une autre machine. J'ai donc installé Visual Studio 2013 et résolu le problème de l'agent teamcity.

Shantu
la source
0

Comme indiqué ci-dessus, l'étape de génération détectée automatiquement est probablement la mauvaise version de Visual Studio. Modifiez-le à l'aide de la liste déroulante Visual Studio sous la section Étapes de construction sur la page des paramètres de configuration de construction :

entrez la description de l'image ici

Aleksei Mialkin
la source
-1

J'ai semblé résoudre ce problème en allant dans le registre et en supprimant toutes les entrées pour MSBuild qui n'étaient pas pour la version 12, puis j'ai redémarré l'agent.

Pour ce faire, allez dans Démarrer> Exécuter et tapez Regedit

Accédez ensuite à la clé:

HKEY_LOCAL_MACHINE> SOFTWARE> Microsoft> MSBuild

Supprimez toutes les versions à l'exception de 12.0.

Descendez au niveau suivant dans ToolsVersions et supprimez les versions non-12.0.

HCdev
la source
1
C'est une mauvaise idée, la dernière chose que vous devez faire dans CI / CD est de jouer avec les registres
goamn