Сбой ReSharper 2020.2.4 для записей C # 9.0

#c# #visual-studio #resharper #c#-9.0

#c# #visual-studio #resharper #c #-9.0

Вопрос:

Я играю с новой record функцией в консольном приложении. Я использую пробную версию VS Community 16.8.0 R # 2020.2.4.

C # код

 using System;

namespace ConsoleApp2
{
    class Program
    {
        static void Main(string[] args)
        {
            var test = new Person("firstname", "lastname");
            Console.WriteLine($"test.FirstName: {test.FirstName} test.LastName: {test.LastName}");
        }
    }

    public record Person(string FirstName, string LastName);
}
  

Файл Csproj

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

  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>net5.0</TargetFramework>
  </PropertyGroup>

</Project>
  

Код может быть скомпилирован и запущен.

Проблема с записью C # 9.0

Проблема

Дело в том, что IntelliSense не распознает саму запись. VS подчеркивает определение записи и не распознает его использование, несмотря на то, что сама программа может быть скомпилирована.

Что я делаю не так?

Сбой Intellisense

Примечание

VS каким-то образом распознает опечатку в определении / использовании записи.

Распознана опечатка

Комментарии:

1. Эта красная подсветка, похоже, является проблемой ReSharper. Возникают ли у вас подобные проблемы при отключении ReSharper?

2. Я пытался отключить R #, но больше не могу найти эту опцию в настройках VS.

3. «Что я делаю не так?» — ожидая, что Resharper полностью поддержит функцию записей сразу после ее выпуска? Проблема не воспроизводима для меня; в моей стандартной установке VS2019 16.8 Intellisense отлично работает для всего в вашем примере кода, включая Person тип. Я не могу доказать, что проблема связана с Resharper, но это кажется очень вероятным.

4. Ранний доступ к Resharper 2020.3 — это единственный вариант, который у вас есть, если вы хотите использовать новые биты синтаксиса C # 9 и Resharper одновременно. И да, проблемы, которые вы показали, связаны с Resharper, а не с Visual Studio.

5. Раньше у меня никогда не было проблем с R # и новой функцией. Записи отсутствуют как минимум с мая.

Ответ №1:

ReSharper 2020.2.4 не поддерживает новые функции C # 9. Попробуйте последнюю версию (2020.3). Любые дальнейшие проблемы, возникающие у вас с ReSharper, лучше всего решать напрямую с JetBrains.

Комментарии:

1. Это решило проблему для меня. Помните, что если вы переходите на EAP и находитесь в командной среде, либо все члены команды должны будут включить EAP, либо некоторые члены команды будут чесать затылки над вашими новыми прекрасными «записями», подчеркнутыми красной волнистостью. В качестве альтернативы, чтобы использовать новые функции C # 9 изолированно с не-EAP RE #, вы можете добавить // ReSharper disable All в начало файла — конечно, вы потеряете всю RE # help для файла с новым материалом C # 9, но это может быть лучше, чем заставлять всехEAP

2. @AdamDiament — выпущен ReSharper 2020.3, поэтому вы и ваша команда можете перейти на последнюю версию.

Ответ №2:

Я должен сказать, что у меня такая же «проблема»?

ReSharper по-прежнему не получает его. Записи для ReSharper по-прежнему чертовски разбиты. Пока это продолжается, я не могу использовать ReSharper в классах, где определены или используются записи. Слишком много ложных ошибок. Включение и выключение ReSharper в зависимости от файла вызывает смехотворное раздражение, что в основном приводит к отключению ReSharper. Черт. Какого черта. Я также полностью удалил все, что связано с ReSharper, и снова выполнил чистую установку. Тот же результат с новейшей версией. C # (предварительный просмотр) можно использовать уже несколько месяцев, и они все еще не справились с управлением. Вау.

@KUTlime перейдите в меню «Расширения» и выберите ReSharper, затем в «параметры …». Второй способ сделать это — щелкнуть правой кнопкой мыши по черному кружку в правом нижнем углу и нажать «Настроить …», вот и все.

Редактировать: обновление до 2020.3 EAP7 (предварительный просмотр раннего доступа) решило проблему для меня (и предварительный просмотр медленнее, чем раньше).