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)'.'
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.
Home
sous Team Explorer et cliquez sur Source control Explorer
Run MSBuild for Project
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
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.
Modifier le changement de modèle msbuild activité ToolPath en "MSBuild/14.0/Bin/MSBuild"
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.
utiliser les arguments msbuild /p:VisualStudioVersion=14.0