Ich möchte C # 6 in meinem Projekt verwenden (Null-Weitergabe, andere Funktionen).
Ich habe VS 2015 auf meinem PC installiert und es funktioniert hervorragend und erstellt Testcode wie
var user = new SingleUserModel(); //all model fields are null
var test = user.User?.Avatar?["blah"];
Wenn ich mein Projekt jedoch in das Repo schiebe und CI mit dem Erstellen beginnt, schlägt die Erstellung fehl, da es nicht unterstützt wird ?
.
Ich habe VS2015 auch auf dem CI-Server installiert, sehe aber so aus, als würde es nicht verwendet. Was kann ich tun?
CI - CruiseControl .NET Builds with C:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe
Antworten:
Stellen Sie sicher, dass Sie anrufen:
Dies ist die Version von MsBuild, die im Lieferumfang von Visual Studio 2015 enthalten ist und den C # -Compiler aufruft, der dies versteht. Sie können diese Version von MsBuild auf Ihrem System herunterladen, indem Sie eine beliebige Edition von Visual Studio 2015 oder die eigenständigen Microsoft Build Tools 2015 installieren .
Durch Hinzufügen eines Verweises auf das folgende NuGet-Paket wird auch die Verwendung des neuen Compilers erzwungen:
Bitte beachten Sie, dass Install-Package die neueste verfügbare Version auswählt, die möglicherweise nicht die gesuchte ist. Überprüfen Sie vor der Installation die Versionshinweise und Abhängigkeiten, um das zugrunde liegende Problem mit der behandelten Version zu beheben. In diesem Fall war dies spezifischer für VS 2015.
Also für Visual Studio 2015:
quelle
Sie können übrigens auch die "Microsoft Build Tools 2015" anstelle von VS2015 auf Ihrem Build-Server installieren.
https://www.microsoft.com/en-us/download/details.aspx?id=48159
MSBuild wird unter demselben Pfad installiert:
quelle
Redistributables and Build Tools
Abschnitt.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:
Die Schlüsselkomponente dieser Zeile ist der ToolsVersion- Teil davon. Ich habe diese Zeile in meinen Projektdateien einfach geändert, um Folgendes zu lesen:
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.
quelle