web-dev-qa-db-fra.com

C # 7.1 ne peut pas être publié

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?

13
Felix

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

17
Jeremy Cook

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>

 enter image description here

16
ironstone13

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.

0
Vadim Ovchinnikov