У меня есть несколько проектов в решении, а функции С# 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".