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>
Если вы переходите из 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