Sie haben wahrscheinlich bereits diese Funktion, aber dies könnte in Zukunft jemand anderem helfen. Ich bin kürzlich auf diese Frage gestoßen, die mich in die richtige Richtung bewegt und letztendlich zu einer Lösung geführt hat.
Eine andere mögliche Lösung hierfür ist das manuelle Aktualisieren Ihrer Projektdateien, um auf die MSBuild-Version abzuzielen, mit der Ihre Projekte erstellt werden sollen.
Ich habe kürzlich ein TeamCity-Buildserver-Update durchlaufen und die Microsoft Build Tools 2015 bereits darauf installiert. Ich dachte, ich hätte alles auf dem Build-Server installiert, meine Lösung zielte auf C # 6.0 ab und ich hatte jedes Projekt auf .net 4.6.1 ausgerichtet. Wie Sie hat alles mit C # 6.0-spezifischem Code in meiner lokalen Umgebung gut funktioniert, aber mein TeamCity-Build-Server mochte nichts davon.
Wie von anderen erwähnt, habe ich versucht, das NuGet-Paket Microsoft.Net.Compilers zu verwenden. Die neueste Version erlaubte es dem Build, auf meinem Build-Server zu funktionieren, aber ich konnte meinen Code nicht lokal veröffentlichen (eine Anforderung von mir). Frühere Versionen dieses NuGet-Pakets ließen mich veröffentlichen, aber der Build würde nicht funktionieren.
Ich musste letztendlich jede Projektdatei in meiner Lösung so ändern, dass sie speziell auf die MSBuild-Version abzielt, die C # 6.0-Code verarbeiten kann. In jeder meiner Projektdateien habe ich eine Zeile gefunden, die der folgenden Zeile ähnelt:
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
Die Schlüsselkomponente dieser Zeile ist der ToolsVersion- Teil davon. Ich habe diese Zeile in meinen Projektdateien einfach geändert, um Folgendes zu lesen:
<Project ToolsVersion="14.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
Der Unterschied bestand darin, dass ich auf Version 14 und nicht auf 4 abzielte. Version 14.0 entspricht Build Tools 2015. Durch Ändern dieser Option verwendete mein TeamCity-Buildserver die richtige MSBuild-Version und konnte meinen C # 6.0-Code erstellen.
Ich musste auch den TargetFrameworkVersion-XML-Knoten manuell aktualisieren, um 4.6.1 zu verwenden, da VS2015 etwas nicht richtig gemacht und meinen lokalen Build durcheinander gebracht hat, aber das ist hier nicht relevant.
Bitte, jemand korrigiert mich, wenn ich falsch liege, aber nur als Referenz denke ich, dass die Versionsnummern ungefähr so lauten:
4,0 = VS2012
12,0 = VS2013
14,0 = VS2015
15,0 = VS2017
Ich glaube, wenn Sie .net 4.7 verwenden möchten, müssen Sie die Build Tools 2017 installiert haben und Ihre Projekte auf 15.0 anstatt auf 14.0 ausrichten, aber ich habe dies nicht überprüft.