Sie haben wahrscheinlich schon diese Arbeit haben, aber dies könnte jemand anderes in der Zukunft helfen. Ich bin in letzter Zeit auf diese Frage gestoßen und es hat mich in die richtige Richtung geführt und letztendlich zu einer Lösung geführt.
Eine andere mögliche Lösung besteht darin, Ihre Projektdateien manuell zu aktualisieren, um die MSBuild-Version anzusprechen, mit der Ihre Projekte erstellt werden sollen.
Ich habe kürzlich ein TeamCity Build Server Update durchgeführt und ich habe bereits die Microsoft Build Tools 2015 installiert. Ich dachte, ich hätte alles auf dem Build-Server, ich hatte meine Lösung für C# 6.0, und ich hatte jedes Projekt, das auf .net 4.6.1 abzielte. Wie Sie, alles mit C# 6.0-spezifischen Code in meiner lokalen Umgebung gut gebaut, aber mein TeamCity Build-Server mochte nichts davon.
Wie bereits erwähnt, habe ich versucht, das Microsoft.Net.Compilers NuGet-Paket zu verwenden. Mit der neuesten Version konnte der Build auf meinem Build-Server ausgeführt werden, aber ich konnte meinen Code nicht lokal veröffentlichen (eine Anforderung von mir). Frühere Versionen dieses NuGet-Pakets würden mich veröffentlichen lassen, aber der Build würde nicht funktionieren.
Was ich fand, dass ich tun musste, war letztlich jede Projektdatei in meiner Lösung zu ändern, um speziell auf die MSBuild-Version zu zielen, die C# 6.0-Code verarbeiten konnte.In jedem meiner Projektdateien, fand ich eine Zeile wie die folgende Zeile ein:
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
mit dem Schlüsselkomponente dieser Linie ist der Toolsversion Teil davon. Ich habe einfach diese Zeile auf meine Projektdateien geändert folgendes zu lesen:
<Project ToolsVersion="14.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
Der Unterschied war, dass ich Version 14 wurde Targeting, nicht 4. Version 14.0 mit Erstellen Sie dieses Werkzeug 2015. Durch die Änderung, mein Teamcity Build entspricht Server verwendete die richtige MSBuild-Version und konnte meinen C# 6.0-Code erstellen.
Ich musste auch den Xml-Knoten TargetFrameworkVersion manuell aktualisieren, um 4.6.1 zu verwenden, weil 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, ich glaube, die Versionsnummern etwas so gehen:
4.0 = VS2012
12,0 = VS2013
14,0 = VS2015
15,0 = VS2017
ich glaube, wenn Sie .net 4.7 verwenden wollte, dann würden Sie die Build-Werkzeuge 2017 installiert und h haben müssen Stellen Sie sicher, dass Ihre Projekte auf 15.0 statt auf 14.0 ausgerichtet sind, aber ich habe dies nicht überprüft.
Für jeden, der MS Build Tools 2015 von den unten angegebenen Links herunterlädt, sind sie für eine alte (vor dem Update) Version, die Bugs hat ... Ich habe einen Link gefunden [https://github.com/Microsoft/msbuild/issues/480 # issuecomment-243679112) bis 2015 Update 3. – bdrajer