Um die neuen C # 7.1-Sprachfeatures mit Visual Studio 2017 zu verwenden, fügen Sie den Projektdateien die Einstellung <LangVersion>latest</LangVersion>
hinzu.
Das Erstellen solcher Projekte aus MSBuild (Version 15.3.409.57025 unter C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\15.0\Bin
) führt jedoch zu einem Fehler:
CSC : error CS1617: Invalid option 'latest' for /langversion;
must be ISO-1, ISO-2, Default or an integer in range 1 to 6.
Wird diese Funktion nur noch nicht von MSBuild unterstützt, oder kann dies funktionieren?
Dies umfasst mehr als 200 Projekte, die ursprünglich in Visual Studio 2013 und 2015 unterschiedlich erstellt wurden. Sie wurden alle mit dem Werkzeug Target Framework Migrator (das lots beim Klicken und speicherte) auf .NET 4.7 ausgerichtet erscheint - basierend auf der Überprüfung der .csproj-Dateiänderungen -, um den Job ordnungsgemäß auszuführen.
Die Projekte werden alle erfolgreich aus Visual Studio 2017 erstellt.
Wir stellten fest, dass unsere MVC-Projekte dieses Problem auslösten.
Um dies zu beheben, haben wir das von diesen Projekten verwendete Microsoft.CodeDom.Providers.DotNetCompilerPlatform
NuGet-Paket von Version 1.0.0 auf 1.0.7 aktualisiert.
Microsoft.Net.Compilers
Das nuget-Paket funktioniert nicht und muss nicht muss installiert werden.project/build settings
einLegen Sie mindestens C# 7.1
oder höher in den Build-Eigenschaften Debug
undRelease
fest. (über: Menü Projekt> Eigenschaften von [Projektname]> Registerkarte Erstellen> Schaltfläche [Erweitert]> Sprachversion).
Wenn Sie den neuesten Stand einstellen, funktioniert nicht.
Stellen Sie außerdem sicher, dass Sie die neueste MSBuild-Version ausführen.
Fügen Sie einen Verweis auf das Paket Microsoft.Net.Compilers (Version 2.3.x) hinzu, um C # 7.1 zu erhalten.
Eine kurze Beschreibung des Pakets :
Microsoft.Net.Compilers
Dieses Paket enthält nicht nur C # und In Visual Basic-Compilern werden auch MSBuild-Ziele geändert, sodass die enthaltene Compilerversionen werden verwendet, und keine vom System installierten Versionen. Nach der Installation erfordert dieses Paket die Microsoft Build Tools 2015.
Falls Sie hier landen, weil Sie den Fehler wie im OP erwähnt erhalten, führen Sie msbuild über die Befehlszeile aus (zB von einem Build-Agenten wie jenkins) ist die Lösung möglicherweise so einfach wie ein Upgrade von Microsoft Build Tools 2015 .
Sie können dies über Microsoft-Build-Tools installieren oder manuell über das offizielle Microsoft Build Tools 2015 oder durch Aktualisieren Ihrer Visual Studio 2017-Installation tun.
Ich habe hier eine Lösung mit einer C # -Konsolen-App, die C # 7.1 verwendet.
Mit der VS 2017-Befehlszeile (und damit MSBuild 15.3.409.57025) hat es problemlos funktioniert. (Das .csproj
enthält <LangVersion>latest</LangVersion>
.)
Wird diese Funktion von MSBuild nur noch nicht unterstützt, oder ist es möglich, dass dies funktioniert?
Ja ist es.
Welche Instanz von csc.exe
wird ausgeführt und welche Version hat es? Weil es so aussieht, als hätten Sie trotz der Angabe der Version die falsche Version von csc.exe
(in der Fehlermeldung steht 1-6
also nicht einmal C # 7 würde funktionieren).