web-dev-qa-db-fra.com

BuildActivity ignore ToolsVersion

J'ai une build d'intégration continue s'exécutant sur un BuildAgent que je ne peux pas faire fonctionner correctement. J'ai récemment changé notre base de code en C # 6.0 et changé les projets en ToolsVersion 14.

J'ai installé Visual Studio 2015 sur le serveur de build (TFS 2012). Si je vérifie maintenant le code C # 6.0, la construction échoue sur le premier projet ("$" est inattendu ou quelque chose ")

Le BuildTemplate est "DefaultTemplate.11.1" Si je vérifie les fichiers journaux, le build appelle le mauvais csc.exe (C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Csc.exe)

si je démarre l'exécutable MSBuild/14.0/Bin/MSBuild avec le projet sans aucun commutateur, la construction réussit. Pourquoi le TFS BuildAgent n'utilise pas ToolsVersion et comment puis-je obtenir TFS 2012 pour créer ma solution Visual Studio 2015

Si j'ajoute le MSBuildArgument /tv:14.0, il échoue toujours. Comme il l'appelle la version 12 de MSBuild qui fait partie du framework .NET 4.6 RC fourni avec Visual Studio 2015.

Changer le ToolsPath de l'activité MSBuild fait fonctionner la construction mais crache des balles si j'essaie d'exécuter mon UnitTest. J'obtiens une exception "Microsoft.VisualStudio.TestPlatform.Utilities.dll". (VS2012 est également installé sur le serveur de build).

MISE À JOUR: Je reçois maintenant une erreur différente avec mes tests unitaires:

TF900548: An error occurred publishing the Visual Studio test results.
Details: 'Method not found:
'System.Collections.Generic.IEnumerable<System.String>
Microsoft.VisualStudio.TestPlatform.Utilities.InferSettingsHelper.MergeRunSettingsAndFindCompatibleSources(Microsoft.VisualStudio.TestPlatform.ObjectModel.Architecture
ByRef,
 Microsoft.VisualStudio.TestPlatform.ObjectModel.FrameworkVersion
 ByRef, System.String, System.String,
 System.Collections.Generic.IDictionary`2<System.String,System.Collections.Generic.KeyValuePair`2<Microsoft.VisualStudio.TestPlatform.ObjectModel.Architecture,Microsoft.VisualStudio.TestPlatform.ObjectModel.FrameworkVersion>>,
 System.Xml.XPath.IXPathNavigable, System.String ByRef)'.'
33
Console

Pour ceux d'entre nous qui ne vivent pas tous les jours dans des modèles de build, voici les étapes qui ont fait que cela fonctionne pour moi:

Trouvez d'abord le modèle associé à votre build (si vous savez déjà où le trouver, sautez quelques étapes).

  • Faites un clic droit sur la définition de la construction et sélectionnez Edit build definition

  • Sélectionnez l'onglet Process et vous verrez le nom du modèle (très probablement être DefaultTemplate si vous ne l'avez pas personnalisé). À l'extrême droite, cliquez sur Show details Pour voir le chemin du modèle.

enter image description here

  • Accédez à l'onglet Home sous Team Explorer et cliquez sur Source control Explorer

enter image description here

  • Recherchez le fichier modèle et double-cliquez pour le modifier. Il devrait apparaître dans une vue graphique comme celle-ci. Faites défiler jusqu'à ce que vous trouviez Run MSBuild for Project

enter image description here

  • Cliquez sur cet article qui affichera immédiatement les propriétés

enter image description here

  • Cliquez sur la petite icône à droite - n'essayez pas de la taper car elle va probablement exploser et planter Visual Studio.

  • Entrez entre guillemets la "C:\Program Files (x86)\MSBuild\14.0\bin" suivante

enter image description here

MAINTENANT POUR LA PARTIE LA PLUS IMPORTANTE

Pour moi, le Run MSBuild for Project Était à DEUX endroits.

J'ai donc simplement répété les étapes ci-dessus aux deux endroits, puis après avoir archivé le fichier .xaml, Ma construction a finalement fonctionné correctement.

Vous devrez peut-être recycler l'agent/contrôleur à partir de l'outil TFS.

enter image description here

42
Simon_Weaver

Modifier le changement de modèle msbuild activité ToolPath en "MSBuild/14.0/Bin/MSBuild"

13
Siva palla

Voir la réponse par Marson .

Utilisation du modèle de processus de construction TfvcTemplate.12.xaml avec le /tv: 14.0 L'argument de construction a fonctionné pour moi.

4
gReX

utiliser les arguments msbuild /p:VisualStudioVersion=14.0

0
Siva palla