Cela fonctionne probablement déjà, mais cela pourrait aider quelqu'un d'autre à l'avenir. Je suis tombé sur cette question récemment et cela m'a fait avancer dans la bonne direction et a finalement conduit à une solution.
Une autre solution possible consiste à mettre à jour manuellement vos fichiers de projet pour cibler la version MSBuild avec laquelle vous souhaitez que vos projets soient créés.
J'ai récemment effectué une mise à jour du serveur de build TeamCity et j'y ai déjà installé Microsoft Build Tools 2015. Je pensais que tout était en place sur le serveur de build, j'avais ma solution ciblant C # 6.0 et j'avais tous les projets ciblant .net 4.6.1. Comme vous, tout avec du code spécifique à C # 6.0 est parfaitement construit dans mon environnement local, mais mon serveur de build TeamCity n'aimait rien de tout cela.
Comme mentionné par d'autres, j'ai essayé d'utiliser le package NuGet Microsoft.Net.Compilers. La dernière version de celui-ci permettait à la construction de fonctionner sur mon serveur de construction, mais elle ne me permettait pas de publier mon code localement (une exigence de la mienne). Les versions antérieures de ce package NuGet me permettaient de publier, mais la compilation ne fonctionnerait pas.
Ce que j'ai trouvé que je devais faire était finalement de modifier chaque fichier de projet dans ma solution pour cibler spécifiquement la version MSBuild qui pourrait gérer le code C # 6.0. Dans chacun de mes fichiers de projet, j'ai trouvé une ligne similaire à la ligne suivante:
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
le composant clé de cette ligne étant la partie ToolsVersion de celle-ci. J'ai simplement changé cette ligne sur mes fichiers de projet pour lire ce qui suit:
<Project ToolsVersion="14.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
La différence ici était que je ciblais la version 14, pas 4. La version 14.0 correspond à Build Tools 2015. En changeant cela, mon serveur de build TeamCity a utilisé la version MSBuild correcte et a pu créer mon code C # 6.0.
J'ai également dû mettre à jour manuellement le nœud xml TargetFrameworkVersion de celui-ci pour utiliser 4.6.1 parce que VS2015 ne faisait pas quelque chose de bien et a gâché ma version locale, mais ce n'est pas pertinent ici.
S'il vous plaît, quelqu'un me corrige si je me trompe, mais juste pour référence, je pense que les numéros de version ressemblent à ceci:
4,0 = VS2012
12,0 = VS2013
14,0 = VS2015
15,0 = VS2017
Je pense que si vous vouliez utiliser .net 4.7, vous devrez installer les outils de construction 2017 et vos projets ciblant 15,0 au lieu de 14,0, mais je ne l'ai pas vérifié.