webentwicklung-frage-antwort-db.com.de

C # 7.1 kann nicht veröffentlicht werden

Ich habe eine ASP.NET Core C # Webanwendung. Ich habe einige Änderungen vorgenommen, die jetzt C # 7.1-Funktionen verwenden. Ich habe die Projektversion geändert, so dass sie kompiliert und gut läuft. Wenn ich jedoch versuche, das Projekt publish zu veröffentlichen, erhalte ich eine Fehlermeldung:

Das Feature 'Standardliteral' ist in C # 7.0 nicht verfügbar. Bitte verwenden Sie die Sprachversion 7.1 oder höher.

Kompilierbefehl, den ich sehe, ist:

C:...\.nuget\packages\Microsoft.net.compilers\2.6.1\tools\csc.exe /noconfig /unsafe- /checked- /nowarn:1701,1702,1705,1701,1702,2008 /nostdlib+ /errorreport:Prompt /warn:4 /define:TRACE;RELEASE;NETCOREAPP2_0 /errorendlocation /preferreduilang:en-US /warnaserror+:NU1605`

Wie an anderer Stelle vorgeschlagen, habe ich Microsoft.Net.Compilers (v2.6.1) installiert, aber es hat keinen Unterschied gemacht.

Gibt es eine Visual Studio-Einstellung, die sich speziell auf die Veröffentlichung auswirkt?

UPDATE: Sieht aus, als hätte eine Konsolenanwendung dieses Problem nicht. Wenn es erfolgreich erstellt wird, wird es auch erfolgreich veröffentlicht. Die Webanwendung veröffentlicht jedoch nicht. War jemand bei der Veröffentlichung von ASP.NET Core-Webanwendungen mit C # 7.1-Features erfolgreich?

13
Felix

Durch das Hinzufügen von <LangVersion>latest</LangVersion> zu Ihrer .pubxml-Datei konnte Visual Studio 2017 (in meinem Fall 15.5.2) veröffentlicht werden.

Quelle: https://developercommunity.visualstudio.com/solutions/166543/view.html

17
Jeremy Cook

Update:
Nach dem Upgrade meines VS2017 von Version 15.4.5 auf 15.5.2 kann ich das Problem reproduzieren und erhalte eine Fehlermeldung 

Das Feature 'Standardliteral' ist in C # 7.0 nicht verfügbar. Benutzen Sie bitte Sprachversion 7.1 oder höher

Die Antwort von @Jeremy Cook löst das Problem:
<LangVersion>latest</LangVersion> in .pubxml


In den alten und neuen Projektformaten ist das LangVersion-Element in der Projektdatei dafür verantwortlich. Sie können dies entweder über die csproj-XML-Datei oder über die Benutzeroberfläche in Visual Studio ändern.

Bitte beachten Sie, dass diese Einstellung von Ihrem Build-Konfiguration..__ abhängt. Um sicherzustellen, dass Sie sowohl Code als auch Publizieren mit C # 7.1 und höher verwenden können, stellen Sie sicher, dass Sie diese Einstellung unabhängig von Build-Konfiguration (Debug, Release usw.).

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <TargetFramework>netstandard2.0</TargetFramework>
    <LangVersion>latest</LangVersion>
  </PropertyGroup>

</Project>

 enter image description here

16
ironstone13

Wenn Sie von ASP.NET Core 2.0 zu ASP.NET Core 2.1 migrieren, stellen Sie sicher, dass Sie über eine Leitung verfügen

<TargetFramework>netcoreapp2.1</TargetFramework>

in Ihrer .pubxml-Datei.

0