J'ai une application Web ASP.NET Core C #. J'ai apporté des modifications qui utilisent maintenant les fonctionnalités de C # 7.1. J'ai changé la version du projet, donc il compile et fonctionne bien. Cependant, lorsque j'essaie de publier le projet, j'obtiens une erreur:
La fonctionnalité 'littéral par défaut' n'est pas disponible en C # 7.0. Veuillez utiliser la version de langue 7.1 ou supérieure.
La commande de compilation que je vois est la suivante:
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`
Comme suggéré par ailleurs, j'ai installé Microsoft.Net.Compilers
(v2.6.1), mais cela ne faisait aucune différence.
Existe-t-il un paramètre Visual Studio qui affecte spécifiquement la publication?
UPDATE: On dirait qu'une application console n'a pas ce problème. S'il se construit correctement, il publie également avec succès. Cependant, l'application Web ne publie pas. Quelqu'un at-il réussi à publier une application Web ASP.NET Core avec des fonctionnalités C # 7.1?
L'ajout de <LangVersion>latest</LangVersion>
à votre fichier .pubxml a permis à Visual Studio 2017 (15.5.2 dans mon cas) de publier.
Source: https://developercommunity.visualstudio.com/solutions/166543/view.html
Mettre à jour:
Après la mise à niveau de mon VS2017 de la version 15.4.5 à 15.5.2, je peux reproduire le problème et obtenir un message d'erreur.
La fonctionnalité 'littéral par défaut' n'est pas disponible en C # 7.0. Veuillez utiliser langue version 7.1 ou supérieure
La réponse de @Jeremy Cook résout le problème:<LangVersion>latest</LangVersion>
en .pubxml
Dans les anciens et les nouveaux formats de projet, l'élément LangVersion
du fichier projet est responsable de cela . Vous pouvez le modifier via le fichier xv csproj
ou via l'interface utilisateur de Visual Studio.
Notez que ce paramètre dépend de votre configuration build . Pour vous assurer que vous pouvez coder et publier à l'aide de C # 7.1 et des versions ultérieures, assurez-vous de configurer ce paramètre quelle que soit la configuration de génération (Debug
, Release
etc).
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netstandard2.0</TargetFramework>
<LangVersion>latest</LangVersion>
</PropertyGroup>
</Project>
Si vous effectuez une migration d'ASP.NET Core 2.0 vers ASP.NET Core 2.1, assurez-vous
<TargetFramework>netcoreapp2.1</TargetFramework>
dans votre fichier .pubxml
.