Visual Studio предлагает функции C # 8.0, но компилятор выдает ошибку - PullRequest
3 голосов
/ 04 октября 2019

В моих проектах Visual Studio дает мне рекомендации по использованию функций C # 8.0 для проектов Framework 4.6, хотя в документации Microsoft по умолчанию указано значение 7.3. Пример одного из предложений:

var i1 = "";
var i2 = "";
i1 = i1 ?? i2; //suggests i1 ??= i2;

example of suggestion

Если я позволю VS исправить предложения, IDE не покажет мне ошибок или предупреждений, ноВ момент сборки я получаю ошибку компилятора.

Я знаю, что могу изменить langversion в файле .csproj, чтобы заставить его работать, но это не главное.

Почему я получаю предложения, а затем не получаю ошибок до компиляции?

В моей памяти я раньше получал предложения по автоматическому обновлению проекта до langversion для функций 7.X в прошлом, если я хотел использовать функции из этой версии.

Примеродного из файлов .csproj:

<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
  <PropertyGroup>
    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
    <ProjectGuid>{00000000-0000-0000-0000-000000000000}</ProjectGuid>
    <OutputType>Exe</OutputType>
    <RootNamespace>MyProject</RootNamespace>
    <AssemblyName>MyProject</AssemblyName>
    <TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion>
    <FileAlignment>512</FileAlignment>
    <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
  </PropertyGroup>
  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
    <PlatformTarget>AnyCPU</PlatformTarget>
    <DebugSymbols>true</DebugSymbols>
    <DebugType>full</DebugType>
    <Optimize>false</Optimize>
    <OutputPath>bin\Debug\</OutputPath>
    <DefineConstants>DEBUG;TRACE</DefineConstants>
    <ErrorReport>prompt</ErrorReport>
    <WarningLevel>4</WarningLevel>
  </PropertyGroup>
  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
    <PlatformTarget>AnyCPU</PlatformTarget>
    <DebugType>pdbonly</DebugType>
    <Optimize>true</Optimize>
    <OutputPath>bin\Release\</OutputPath>
    <DefineConstants>TRACE</DefineConstants>
    <ErrorReport>prompt</ErrorReport>
    <WarningLevel>4</WarningLevel>
  </PropertyGroup>
  //... References & compilation files
  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
</Project>
...