Подтвердить что ты не робот

Функции С# 7 не работают в веб-проекте на Visual Studio 2017 RC

У меня есть несколько проектов в решении, а функции С# 7, такие как кортежи и выражения выражений, отлично работают во всех библиотечных проектах, но есть (не Core) веб-проект, который не компилируется из-за ошибки в функциях С# 7. Сразу после компиляции окно ошибки быстро очищается, по-видимому, потому, что IDE/редактор компилирует те же единицы без ошибок. Я должен использовать окно вывода, чтобы увидеть ошибки компилятора. Как будто IDE/редактор принимает С# 7, но компилятор, используемый в сборке, не является.

Я попытался добавить "__DEMO__,__DEMO_EXPERIMENTAL__" к условным символам компиляции, но безрезультатно. Я экспериментировал с таргетингом на другую версию фреймворка и отредактировал файл web.config, включая теги compilation и targetFramework system.web.

Примеры ошибок:

if (!config.Properties.TryGetValue(modelId, out var model)) // error CS1003: Syntax error, ',' expected
if (modelDescription is ComplexTypeModelDescription complexTypeModelDescription) // error CS1026: ) expected

Вот первые несколько строк файла csproj для проекта:

<Project ToolsVersion="14.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <Import Project="..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.1.0.3\build\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props" Condition="Exists('..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.1.0.3\build\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props')" />
  <Import Project="..\packages\Microsoft.Net.Compilers.1.3.2\build\Microsoft.Net.Compilers.props" Condition="Exists('..\packages\Microsoft.Net.Compilers.1.3.2\build\Microsoft.Net.Compilers.props')" />
  <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />

Обновление: Я попытался создать новый веб-проект, используя последний шаблон в VS 2017 RC и копируя его в исходных файлах. То же самое.

Я также попытался явно установить Project | Недвижимость | Построить | Расширенный | Язык версии до 7. Результаты в "Недопустимый параметр" 7 "для/langversion".

4b9b3361

Ответ 1

Решение должно обновить пакет nuget Microsoft.Net.Compilers до >= 2.0.0. На данный момент для версии 2.0.0 должен быть установлен флажок "Включить предварительную проверку" в верхней части диспетчера пакетов. При установленной установке расширенный параметр Language version не должен быть переопределен с Default.