Всем привет! На связи команда по улучшению продуктивности в .NET (aka. Roslyn). Мы много внимания уделяем улучшению вашего опыта .NET-кодинга. Ведь иногда небольшие дополнения и исправления действительно могут улучшить рабочий процесс. Возможно вы уже видели некоторые улучшения в превью-версиях VS2019. Но мы все равно хотим рассказать о некоторых из них, которые должны помочь вам работать продуктивнее.

Осторожно, много гифок.



Улучшения инструментов


Как вам новые цвета от Roslyn? Цвета Visual Studio Code получили высокую оценку, поэтому мы включили аналогичные цветовые схемы в Visual Studio. Ваш редактор кода стал теперь немного красочнее. Ключевые слова, пользовательские методы, локальные переменные, имена параметров и перегруженные операторы получили новые цвета. Вы даже можете настроить цвета для каждой классификации синтаксиса, перейдя в Tools > Options > Environment > Fonts and Colors и прокрутив до «User Members».

New roslyn classification colors

В нижней части файла, в вашем редакторе, находятся индикаторы работоспособности документа, а также значок очистки кода. Индикаторы работоспособности документа позволяют сразу узнать, сколько ошибок и предупреждений присутствует в файле, который вы сейчас открыли. Вы можете нажать на значок очистки кода, чтобы применить правила стиля кода, указанные в Tools > Options, или, если у вас есть файл editorconfig, который предписывает использование одного стиля кода в вашей команде, VS применит стили, указанные в этом файле.

image

Вы можете редактировать файлы проектов типа SDK простым двойным щелчком мыши. Вы также можете просматривать эти файлы в виде превью в навигации GoToAll (Ctrl+t) и искать содержимое для ссылок на файлы.

image

Загрузите подмножество проектов в ваше решение с помощью фильтрованных решений! Теперь вы можете выгрузить проекты и сохранить .slnf-файл, который откроет только указанные вами проекты. Это поможет вам быстро получить интересующий вас код без необходимости загрузки всего решения.

image

Найдите все ссылки, классифицируемые по типу ссылки. Вы можете выполнять фильтрацию по чтению/записи в новом столбце «Kind» в окне поиска всех ссылок.

image

Запустите форматирование стиля кода по всему решению в командной строке с помощью глобального инструмента dotnet format.

image

Intellicode — это расширение, предлагающее умные подсказки, благодаря обученным моделям машинного обучения, которые работают в более чем 2000 опен-сурсных репозиториях .NET на GitHub.

image

Теперь омнибус новых исправлений кода и рефакторингов!


Foreach для LINQ


image

Добавление недостающей ссылки для не импортированных типов


image

Синхронизация пространства имен и имени папки


image

Инвертирование условных выражений


image

Меню Pull members up для доступа к интерфейсу


image

Перенос/отступ/выравнивание параметров/аргументов


image

Удаление неиспользуемых значений и параметров выражений


image

Это список некоторых нововведений в Visual Studio 2019. Полный список смотрите в примечаниях к выпуску. Как всегда, мы были бы рады получить от вас фидбэк через twitter, на GitHub или в комментариях ниже. Также важно отметить, что для использования .NET Core 3.0 Preview вам необходимо загрузить и установить SDK. Он пока не включен в Visual Studio 2019 Installer.

Комментарии (46)


  1. unnutz
    10.04.2019 10:14
    +1

    Решили запилить фичи, которые добавляет Resharper. Интересно, не купит ли Microsoft внезапно Jetbrains :-)


    1. grafdezimal
      10.04.2019 10:16
      +1

      Тоже подумал, resharper как-то всё больше теряет смысл…


      1. Foreglance
        10.04.2019 13:06

        Активно пользуюсь ReSharper-ом с его первых бета-версий (2003 год). Он всегда был далеко впереди по функционалу, удобству и динамичной адаптируемости к пользователю, чем VS. Но даже при всех его замечательных возможностях — он меня расстраивает своей ограниченностью после даже короткого периода работы на IntelliJ IDEA, которая словно сама программирует — только успевай набрасывать логику.


        1. t13s
          10.04.2019 17:42
          +1

          Попробуйте Rider. Если вам в WinForms не нужно, то вполне себе живой комбайн из IDEA и Resharper


          1. Foreglance
            10.04.2019 17:45

            Да, мне он нравится — использую когда под Unity программирую.


          1. Foreglance
            10.04.2019 17:48

            И в связке с XCode использую AppCode (для iOS). Ну и AndroidStudio (на базе IDEA) тоже — красота, везде очень похожее окружение, поведение и возможности.


      1. NeuroHunter
        10.04.2019 15:39

        Мы его даже в VS2017, по большому счету, используем только для юнит-тестов, ибо поддержка nUnit в VS отстойная (а без плагинов — отсутствующая)


        1. Foreglance
          10.04.2019 15:51

          У меня были коллеги, считающие ReSharper слишком расслабляющим (балующим) разработчиков (некоторые были действительно сильные разработчики, и без ReSharpera справлялись), были и явные его противники (в том числе с 10+ лет опытом), аргументирующие тем, что могут и в нотепаде писать код (приходилось из их кода вычищать комменты вроде «//if», «//end if»). Возможно кому-то хватает возможностей VS — мне нет, сравниваю с IDEA (возможно я слишком посредственный разработчик — мне ReSharper здорово помогает)


          1. NeuroHunter
            10.04.2019 16:08

            У нас еще накладываются определенные «особенности» окружения (типа огромного solution'а), так что отключение ReSharper позволяет заметно ускорить работу.


            1. Foreglance
              10.04.2019 16:13

              Это да, приходится ресурсами платить за производительность разработчика.
              Кстати обратите внимание на расположение кэша ReSharper-a (в опциях) — он может по умолчанию на юзерскую папку быть настроен, которая у некоторых компаний на сетевом диске и постоянно синхронизируется — там много мелких файлов создаётся, словари пользователям. Лет 10 назад ещё рекомендовали его куда-нибудь в быстрый сторедж направить. Сейчас SSD выручает.


              1. NeuroHunter
                10.04.2019 16:16

                Это да и это у всех сделано, но не очень спасает. Даже с кэшем на SSD и репозиторием на SSD.


                1. Foreglance
                  10.04.2019 16:38

                  Сочувствую Вам. У нас сейчас всего 44 проекта в солюшне, пришлось на выданном мне офисном нотебуке с i5/16GB/4cores Solution Wide Analysis отключить, иногда все равно подлагивает. Раньше на топовых мобильных i7/32GB/много ядер — таких проблем не помню.


            1. Simplevolk
              11.04.2019 08:15

              А сколько проектов в вашем Solution, если не секрет?


              1. NeuroHunter
                11.04.2019 09:12

                551.
                И это, конечно же, не повод для гордости.


      1. NIKOSV
        11.04.2019 02:00

        Не надо, у решарпера остается одна особенность которую пока еще не скопировали разработчики студии — тормоза )

        А если серьезно, решарпер это не только код, весь код интеледженс я отключил чтобы хотя бы та же latency при набирании кода была адекватная. В нем работа с тестами гораздо удобнее, есть stack trace explorer, нормальный профайлинг.

        PS Rider работает шустрее чем студия + решарпер.


        1. NeuroHunter
          11.04.2019 09:18

          Вопрос не в тему: а вы знаете, как настроить ReSharper таким образом, чтобы выключить всю аналитику кода, но оставить поддержку юнит-тестов? В моем случае отключение Code Analysis вырубает и распознавание тестов :(

          Spoiler header
          1. Kanut
            11.04.2019 09:30

            Там можно исключать код из code analysis.
            То есть просто исключите всё кроме тестов.


        1. IvanNochnoy
          11.04.2019 12:10

          Stack trace explorer есть на маркетплейсе. А что не так с тестами?


          1. NeuroHunter
            11.04.2019 12:36

            А что не так с тестами?

            • Поддержки nUnit из коробки нет.
            • Бесшовной поддержки тестов для разных архитектур (x86/x64) нет
            • Детекта тестов без предварительной сборки всего солюшена нет
            • После каждой сборки все тесты во всем солюшене индексируются заново
            • Создания сессий тестирования на лету нет (в ReSharper я могу создать сессию для тестирования и, если понадобится, сохранить ее отдельно, причем она сама будет автоматически сохранена для этого солюшена, а VS хочет создать playlist-файл и сохранить его на диск? )


            1. IvanNochnoy
              11.04.2019 14:48

              VSIX тест-адаптеры являются deprecated в VS 2019. Тестовые адаптеры подключаются в в виде пакета в файле проекта. Что подключите, то и будет работать.

              Учитывая, что с Решарпером студия грузится много дольше, чем без него, предварительный билд перед тестированием, может быть даже быстрее. Хотя Вашем случае (551 проект в солюшене), готов поверить, что Решарпер справляется лучше.


      1. Kanut
        11.04.2019 09:15

        На мой взгляд те функции которые microsoft «копирует» с resharper у них работают не очень оптимально. Особенно в плане производительности и тормозов.
        То есть на более-менее среднем проекте их приходится выключать или VS постоянно зависает.


    1. iluxa1810
      10.04.2019 16:46

      Так то да:

      • форматирование кода завезли
      • рефакторинг завезли
      • подсказки, что и где можно упростить завезли
      • подсветку синтаксиса регулярок завезли


      А раньше майки говорили, что-то вроде:
      зачем нам это делать, если это реализовано в расширениях?


      По моему основные вкусности Resharper'а добавили. Единственное, что мне не нравится — это стандартный intellisense, который не сортирует члены класса по типам, а только по алфавиту. Вроде, это нигде не настраивается в VS, а вот решарперский сортирует по типам, а внутри типов по алфавиту.


      1. Naglec
        10.04.2019 21:01

        Рекомендую IntelliCode


        1. iluxa1810
          10.04.2019 21:55

          Ну это просто подсказка по контексту.
          А мне бы все равно хотелось бы иметь в intellisense возможность сортировать список, как мне хочется. Я привык видеть сначала поля в списке, а затем все методы, а в конце методы-расширители. Вроде, как и мелоч, но все равно привык к этой решарперской сортировке…


      1. ad1Dima
        11.04.2019 09:34

        Вроде, это нигде не настраивается в VS, а вот решарперский сортирует по типам, а внутри типов по алфавиту.
        не совсем то, но в студии есть фильтрация по типу.


    1. White_Scorpion
      11.04.2019 11:53

      Так это давняя гонка. Ещё со времён первых решарперов — тогда Visual Studio была быстра, но уныла в плане функциональности, а Resharper превращал её в очень приличный редактор. Потому решарпер зарекомендовал себя с самых хороших сторон, а мелкомягкие вкурили фишку и начали нагло тырить его функционал и вставлять в Visual Studio as default — и чем дальше тем больше.
      Сейчас мы имеем в поставке — "толстая и красивая" VS2019, в которой вполне себе можно уже и без Resharperа, но они продолжают придумывать, а мелкомягкие — тырить.


  1. AndrewA
    10.04.2019 11:59

    Почините уже наконец работу с солюшенами в которых есть и C# и F# проекты. Уже больше двух лет висит баг.


  1. GLeBaTi
    10.04.2019 14:32
    +1

    Вообще пора убирать всю эту ручную работу. Например при сохранении делать авто-формат и удалять неиспользуемые using, добавлять нужные using. Также подчеркивать все места, где пользователь может улучшить (упростить) свой код.
    (см. Golang)


    1. zeronice
      10.04.2019 15:02

      Также подчеркивать все места, где пользователь может улучшить (упростить) свой код.

      Так вроде бы давно умеет, вопрос личных настроек


    1. vlivyur
      10.04.2019 15:07

      Productivity Power Tools делает это сам при сохранении (правда, только в обычном коде, а не в разметке).


  1. segment
    10.04.2019 15:30

    А как обновиться до 2019? В установщике 2017 версии нет актуальных обновлений. Качать отдельно установщик для новой студии?


    1. Imbecile
      10.04.2019 23:21

      Именно. Студии никогда не обновлялись между мажорными версиями.


  1. excoder
    10.04.2019 16:18

    > Как вам новые цвета от Roslyn?



    И по-прежнему никакого курсива. Шёл 2019-ый, ЛОЛ.


  1. Ascar
    10.04.2019 20:00
    +1

    А code contracts окончательно умер?


  1. OBIEESupport
    10.04.2019 21:19

    Уважаемая компания Microsoft!
    Как уже указали комментаторы до меня, сложно работать на текстовой канве, которая по функционалу не дотягивает до уровня 2006 иных бесплатных сред. Но у нас есть более насущный вопрос, почему в *.xlsm редакторе кода код с русскими буквами вставляется в любой другой редактор с кракозябрами. Началось с Office 2016. Думаем, что скоро русскоязычные комментарии совсем нельзя будет писать.


    1. click0
      10.04.2019 23:05

      Проверьте два варинта:

      1. переключить раскладку клавиатуры в английский язык и только потом вставлять
      2. переключить раскладку клавиатуры в русский язык и только потом вставлять


      1. OBIEESupport
        11.04.2019 00:51

        Спасибо, помогло! Текстовый редактор редактор действительно боится неверной раскладки клавиатуры.
        А как вам баг насчет сложных условий в if? Если есть три условия, то скобку после последнего можно переставить ко второму (. И диагностики нет.


      1. oracle_and_delphi
        11.04.2019 11:02

        А если текст многоязычный?
        То есть там есть не только русский и английский, но и например китайский.
        И не говорите, что «так не бывает!», откройте любую статью на русском про Китай (например, на магазета) — там такое часто, то есть русский текст и отдельные вставки на китайском.


  1. Andrey2008
    10.04.2019 22:24

    Кстати, если кто-то не видел, то мы уже отметились :)
    Проверяем исходный код Roslyn.


  1. Femistoklov
    11.04.2019 08:24

    Дайте угадаю, горизонтальную прокрутку колесом мыши так и не сделали? Зачем тогда это всё?


    1. ad1Dima
      11.04.2019 09:39

      О какой именно прокрутке речь? Тачпадом у меня крутится. Есть ещё MiddleClickScroll


      1. Femistoklov
        11.04.2019 12:17

        Нет, не тачпадом, говорю же, вращением колеса мыши. Расширение, насколько я понял, добавляет т.н. «плавную прокрутку».


        1. ad1Dima
          11.04.2019 12:29

          вращением колеса мыши
          как именно-то? У вас второе колесо, или с шифтом хотите скролить (последнее они вообще никуда не добавляют)?

          Расширение, насколько я понял, добавляет т.н. «плавную прокрутку».
          расширение добавляет скрол по нажатию стредней кнопки мыши, как в браузерах или excel


          1. Femistoklov
            11.04.2019 12:39

            как именно-то? У вас второе колесо, или с шифтом хотите скролить (последнее они вообще никуда не добавляют)?
            Да хоть с альтом. А, то есть у них это идеологическое, ну что же, тогда, конечно, простительно.



  1. vba
    12.04.2019 10:13

    Добавление недостающей ссылки для не импортированных типов

    Всего то 15 лет потребовалось для запиливания этой фитчи ...