C# 7.1 не может быть опубликован

у меня есть ASP.NET ядро c# веб-приложения. Я внес некоторые изменения, которые теперь используют функции C# 7.1. Я изменил версию проекта, поэтому он компилируется и работает нормально. Однако, когда я пытаюсь публикации проект, я получаю сообщение об ошибке:

функция "литерал по умолчанию" недоступна в C# 7.0. Пожалуйста, используйте язык версии 7.1 или выше.

команда компиляции, которую я вижу:

C:....nugetpackagesmicrosoft.net.compilers.6.1toolscsc.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`

как было предложено в другом месте, я установил Microsoft.Net.Compilers (П2.6.1), но это не имело никакого значения.

есть ли параметр Visual Studio, который влияет на публикацию конкретно?

обновление: похоже, что консольное приложение не имеет этой проблемы. Если он успешно строит, он также успешно публикует. Тем не менее, веб-приложение не публикует. Был ли кто-нибудь успешен в публикации ASP.NET основное веб-приложение с функциями C# 7.1?

4 ответов


добавлять <LangVersion>latest</LangVersion> в свой .файл pubxml сделал возможным публикацию Visual Studio 2017 (15.5.2 в моем случае).

источник:https://developercommunity.visualstudio.com/solutions/166543/view.html


обновление:
После обновления моего VS2017 с версии 15.4.5 до 15.5.2 я могу воспроизвести проблему, и я получаю ошибку

функция "литерал по умолчанию" недоступна в C# 7.0. Пожалуйста, используйте язык версии 7.1 или выше

ответ от @Jeremy Cook решает проблему:
<LangVersion>latest</LangVersion> in .pubxml


как в старых, так и в новых форматах проекта LangVersion элемент в файле проекта ответственный за это. Вы можете либо изменить это через csproj xml-файл или через пользовательский интерфейс в visual studio.

обратите внимание, что этот параметр зависит от вашего конфигурация. Чтобы убедиться, что вы можете как код, так и публикация использование C# 7.1 и более поздних версий убедитесь, что вы настроили этот параметр независимо от конфигурации сборки (Debug, Release и т. д.).

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

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

</Project>

enter image description here


Если вы переходите из ASP.NET Core 2.0 to ASP.NET Core 2.1 убедитесь, что у вас есть line

<TargetFramework>netcoreapp2.1</TargetFramework>

в своем .


похоже, вы опубликованы в вашем местном магазине Nuget. Убедитесь, что хранилище Nuget настроено на использование C#7.1. А также проверьте, есть ли ваш Nuget.exe pack обновляется до последней версии, которая может использовать C#7.1