webentwicklung-frage-antwort-db.com.de

Verwenden von C # 7.1 mit MSBuild

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.

16
Richard Everett

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.

1
Richard Everett

Nuget-Pakete

  • Microsoft.Net.Compilers Das nuget-Paket funktioniert nicht und muss nicht muss installiert werden.

Stellen Sie das folgende project/build settings ein

  • Legen Sie mindestens C# 7.1 oder höher in den Build-Eigenschaften DebugundRelease fest. (über: Menü Projekt> Eigenschaften von [Projektname]> Registerkarte Erstellen> Schaltfläche [Erweitert]> Sprachversion).

  • Wenn Sie den neuesten Stand einstellen, funktioniert nicht

 preview

Stellen Sie außerdem sicher, dass Sie die neueste MSBuild-Version ausführen.

20
Dominic Jonas

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.

7
Julien Couvreur

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.

1
firepol

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).

0
Richard