Что нового в Rider

В Rider 2021.3 появилась поддержка .NET 6 SDK, включая функцию Hot Reload. Также мы добавили новую вкладку Problems, полностью переработали главную панель инструментов и обновили вкладку Debug. Поддержка пространств имен на уровне файлов и директивы global using позволит вам эффективнее использовать новые возможности C# 10.

Помимо этого, мы расширили поддержку Unity и F#, обновили действие Reformat and Cleanup при сохранении, добавили предпросмотр XAML для SDK .NET 6, .NET 5 и .NET Core 3.x, а также поддержали чипы Apple silicon.

Поддержка .NET 6 SDK

В Rider 2021.3 появилась поддержка .NET 6 SDK, включая:

  • шаблоны проектов;
  • новые целевые фреймворки;
  • новый API NuGet;
  • функцию Hot Reload;
  • отладку Blazor WebAssembly;
  • создание/запуск/отладку проектов, использующих новый SDK в качестве целевого;
  • кодогенерацию ASP.NET для проектов .NET 6.

Кроме того, Rider предлагает базовую поддержку проектов Xamarin iOS и Xamarin Android из .NET 6 SDK.

Hot Reload

Rider поддерживает функцию .NET 6 Hot Reload. Если вы измените управляемый исходный код во время выполнения приложения, Rider предложит применить изменения без перезапуска (см. желтую панель уведомлений Sources are modified в верхней части текстового редактора). Если вы примете изменения, Rider сразу же обновит приложение, и вы сможете продолжить работу.

Функция Hot Reload включается автоматически при использовании конфигураций запуска .NET Project и .NET Launch Settings Profile.

Включить или отключить функцию Hot Reload можно в разделе Preferences/Settings | Build, Execution, Deployment | Hot Reload.

Ограничения:

  • Пользователи Windows могут выполнять отладку во время сессии Hot Reload, то есть автоматически применять изменения при остановке и возобновлении выполнения. Без отладки функция Hot Reload работает на всех платформах.
  • Функция Hot Reload не поддерживает приложения на F# и VB.NET. Также она не поддерживает изменения в интерфейсе для приложений WPF, Windows Forms, .NET MAUI и др. Blazor WebAssembly (WASM) тоже пока не поддерживается.
  • Чтобы отобразить изменения на страницах Razor, нужно перезагрузить их в браузере. Автоматическая перезагрузка страниц появится в следующих релизах.

Подробнее о функции Hot Reload читайте в нашем блоге

Элементы UI/UX

Обновленная главная панель инструментов

Прежняя главная панель инструментов создавала ряд проблем, которые мы хотели устранить. На ней было слишком много иконок, большинство из которых практически не использовались. Функции системы контроля версий и навигации было сложно найти. А главное, было невозможно управлять сразу несколькими конфигурациями запуска.

Мы полностью обновили главную панель, сделав ее более понятной и функциональной. Теперь на ней есть:

  • кнопки Back и Forward для базовой контекстной навигации по Rider;
  • виджет для доступа ко всем функциям системы контроля версий и управления ими (теперь он находится ближе к окну Commit);
  • большое поле Search Everywhere для глобального поиска;
  • виджет Solution Configuration для управления конфигурациями решения;
  • новый виджет Run/Debug для управления конфигурациями запуска.

Однако, чтобы не мешать работе тех, кто успел привыкнуть к старой панели инструментов, новая панель будет включена по умолчанию только если Rider устанавливается впервые. Если у вас уже установлен Rider, и вы хотите попробовать новую панель, включите ее в настройках View | Appearance | Toolbar (вместо Toolbar Classic).

Представление Problems

Удобно, когда все потенциальные проблемы перечислены в одном месте. Поэтому мы добавили вкладку Problems, в которой можно просмотреть все потенциальные проблемы, найденные в решении: ошибки при загрузке проекта или восстановлении NuGet, проблемы, найденные инспекциями в текущем файле, ошибки SWEA и т. д.

Current File

На этой вкладке перечислены все ошибки, предупреждения, а также предложения и подсказки Rider для текущего файла. Как и в других IDE на основе IntelliJ, перейти на вкладку Current File можно при помощи виджета Inspection, расположенного в верхней части вертикальной полосы прокрутки.

Toolset, Environment

На этой вкладке собраны все уведомления диагностики и сообщения, связанные с загрузкой решения, процессами восстановления NuGet и т. п. Для каждой проблемы приведено четкое описание и способы устранения, если они существуют. Раньше, чтобы получить подробную информацию о сообщениях диагностики, нужно было открыть окно Event Log.

All Solution Files

All Solution Files — это бывшее окно SWEA. Здесь можно просмотреть все проблемы, найденные функцией отслеживания ошибок (SWEA) в решении.

Новое окно Bookmarks

Окно Bookmarks заменяет прежнее окно Favorites.

При добавлении закладки Rider по умолчанию помещает ее в узел в окне Bookmarks, имеющий то же название, что и текущий проект. Новые закладки занимают место наверху списка данного узла. Также вы можете создать новые узлы и перетащить туда закладки.

Отладчик

Обновленная вкладка Debug

Мы обновили интерфейс вкладки Debug! Здесь много изменений, о которых стоит рассказать.

По умолчанию вкладка Debug включает три раздела: Threads & Variables, Console и Debug Output. Другие разделы, например Memory и Parallel Stacks, скрыты, но их отображение можно настроить в меню Options (значок шестеренки справа).

Мы убрали левую панель инструментов, перенеся иконки в верхнюю панель и контекстное меню. Чтобы верхняя панель инструментов была максимально компактной, мы оставили на виду значки только для самых важных действий. Остальные значки были убраны в раскрывающееся меню More (значок с вертикально расположенными точками). Иконка Hide Frames from Libraries и переключатель Hide/Show Threads перенесены в контекстное меню представления Threads.

В раскрывающемся меню More появился новый раздел Settings. Здесь вы найдете список самых часто используемых настроек отладчика. Больше не придется искать их в диалоге Settings/Preferences и на странице Build, Execution, Deployment | Debugger.

Обновленное окно Immediate

Окно может отображаться в двух видах: развернутом и кратком. В кратком варианте представление Variables показывает результат выполнения только в переменной $result. В развернутом варианте, помимо переменной $result, можно также посмотреть историю и результаты выполнения строк. Для переключения из одного режима в другой нажмите на иконку Expand/Collapse.

Мы перенесли действие Add Watch из представления Variables на панель инструментов окна Immediate. Теперь его также можно запустить сочетанием клавиш Ctrl+Shift+Enter.

Новая опция Stop on Breakpoints принудительно останавливает процесс вычисления выражений в точках останова. Если отключить эту настройку, при вычислении выражений точки останова будут игнорироваться.

Чтобы вычислять объекты с большим количеством свойств было удобнее, мы добавили значок Evaluate. При нажатии на него открывается окно Evaluate с вычисленным объектом. В этом окне гораздо удобнее просматривать свойства объекта в виде дерева.

Отладка приложений UWP

У нас хорошие новости для UWP-разработчиков: теперь можно запустить проект UWP сразу с подключенным отладчиком. Вам больше не придется запускать проект, а потом отдельно вручную подключать отладчик к запущенному процессу.

Поддержка Docker-контейнеров в Windows

Теперь вы можете выполнять отладку приложений .NET (Core) и .NET Framework в локальных Docker-контейнерах на Windows. Раньше отладчик мог работать только с приложениями .NET Core в Docker-контейнерах Linux.

Подробнее — в нашем блоге.

Другие улучшения

При создании стандартного делегата (System.Func или System.Action) можно легко перейти к методу или лямбда-выражению, оберткой для которого будет этот делегат. Используйте ссылку Navigate для узла делегата в списке Variables.

При создании event handler (delegate) с помощью лямбда-выражения можно подробно изучить подписчиков и собранные объекты, используя новый визуализатор.

В обработчике появился узел Subscribers с подузлом Captured variables. Чтобы быстро перейти к тому фрагменту, на который подписано событие, мы добавили новую ссылку Navigate для каждого подписчика.

Анализ кода

C# 10

Мы продолжаем расширять поддержку возможностей C# 10 в Rider. В новой версии мы поддержали пространства имен на уровне файла, директиву global using, атрибут CallerArgumentExpression, а также обработчики интерполированных строк и лямбды C# 10.

Начнем с пространств имен уровня файла. Мы поддержали соответствующий синтаксис, а также добавили для него настройки стиля (Settings/Preferences | Editor | Code Style | C# | Syntax Style | Code body | Namespaces). Как только вы выберете стиль синтаксиса, Rider укажет вам на код, требующий изменений, и предложит соответствующие быстрые исправления. Вы сможете в один клик применить изменения ко всему проекту или решению.

Также мы добавили два контекстных действия, позволяющие вернуть прежний стиль синтаксиса: Convert to file-scoped namespace и Convert to block-scoped namespace.

Подробнее о поддержке пространств имен на уровне файла читайте в нашем блоге

Перейдем к директивам global using. Теперь при анализе кода Rider учитывает директивы using, отмеченные ключевым словом global, и использует эти данные для разрешения символов во всех файлах проекта. Rider уведомит вас, если директива global using располагается в неправильном файле.

Также Rider подсветит директивы global using, которые не используются в проекте, — вы сможете удалить их, используя быстрое исправление.

Мы добавили расширенную поддержку атрибута CallerArgumentExpression, включая автодополнение кода и инспекции.

Подробнее о Caller Argument Expressions читайте в нашем блоге.

C# 10 вводит понятие обработчиков интерполированных строк. Выражения с интерполированными строками будут работать быстрее в .NET 6, а обработчики позволят использовать значения Span<char>, чтобы заполнить интерполяцию. Те, кто пишет свои собственные библиотеки, смогут использовать обработчики для того, чтобы следить за преобразованием интерполированных выражений в строки. Rider 2021.3 распознает обработчики интерполированных строк в библиотечном коде и предлагает безопасно вводить интерполяцию строк в других местах.

Чтобы объекты record struct работали быстрее, Rider предложит отметить их ключевым словом readonly. А чтобы лишний раз не перегружать объявления типов различными модификаторами, эта инспекция будет предложена только тогда, когда тип record содержит члены экземпляра без мутации, а во всем решении нет мутации через сеттеры (чтобы определить это, необходимо включить SWEA).

C# 10 позволяет немного упростить синтаксис сопоставления с образцом: для доступа к внутренним элементам можно использовать не вложенные скобки, а синтаксис с точкой.

Мы добавили в Rider соответствующую инспекцию, быстрое исправление, а также контекстное действие для отмены быстрого исправления.

А еще:

  • Мы улучшили поддержку лямбд C# 10 — вы не столкнетесь с ложноположительными ошибками и красной подсветкой в проектах .NET 6 Minimal API. Также Rider подскажет вам, какой стиль синтаксиса использовать, и добавит скобки там, где это необходимо для компиляции.
  • Теперь Rider разрешает генерировать класс с именем Program, позволяющий выполнять операторы верхнего уровня.
  • Мы добавили базовую поддержку членов интерфейса static abstract. Теперь такие конструкции учитываются при анализе кода и не подсвечиваются красным. Также они учитываются при генерации отсутствующих членов. Кроме того, в этой версии появились соответствующие отметки на полях редактора и возможность навигации к базовым/производным символам.

Ссылочные типы, допускающие значение null (NRT)

Люди часто используют код из внешних источников, например из stackoverflow.com. В последнее время в примерах кода из интернета все чаще используется синтаксис NRT (cсылочных типов, допускающих значение null). Но что, если ваше решение не поддерживает синтаксис NRT? Мы добавили два быстрых исправления, которые позволяют избавиться от синтаксиса NRT при вставке такого кода в проект: Replace with JetBrains.Annotations attributes и Remove nullable annotations without ‘#nullable’ context.

Время от времени соответствие аргументов типов ограничениям допустимости значения null могут нарушаться. Мы добавили ряд быстрых исправлений, позволяющих:

  • убрать аннотации допустимости значения null из аргументов типа;
  • убрать ограничения notnull из аргументов типа;
  • разрешить использование значений, допускающих null, в параметрах типов;
  • запретить использование значений, допускающих null, в параметрах типов, которые используются в качестве аргументов типов.

Мы добавили быстрые исправления, позволяющие отредактировать аннотации при параметрах, чьи значения по умолчанию допускают null, — на уровне файла, проекта или всего решения.

Также мы добавили быстрое исправление, с помощью которого можно разрешить значения null для параметров, которые явно проверяются на null внутри метода.

Анализ кода на C#

Мы добавили несколько быстрых исправлений и контекстное действие для статических локальных/анонимных функций с замыканиями:

  • Быстрое исправление Allow closures — чтобы убрать модификаторы static из локальной/анонимной функции, содержащей замыкания.
  • Быстрое исправление Pass closure as a parameter — чтобы добавить замыкание в параметры статической локальной функции.
  • Контекстное действие Pass closure as a parameter — чтобы добавить замыкание в параметры нестатической локальной функции.

Новая инспекция Simplify string interpolation и соответствующее быстрое исправление позволяют заменить вызовы методов .PadLeft() и .PadRight() на выравнивание в плейсхолдерах внутри интерполированных строк.

Помимо добавления типа record struct (C# 10) мы улучшили поддержку обычных структур. Многие разработчики все еще используют для DTO классы с инициализаторами объекта. Теперь вы можете быстро преобразовывать их в конструкторы с параметрами. Это можно сделать непосредственно в объявлении record либо в любом инициализаторе объекта. Также вы можете преобразовывать DTO, которые задают конструктор, включающий инициализацию свойств.

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

Мы добавили проверку целесообразности выполнения целочисленных арифметических операций для типов byte, sbyte, short, ushort, uint, long, ulong и enum. Они помогут вам устранить недостижимый код.

Ускоренный анализ кода

Выполнение быстрых исправлений и контекстных действий для папок, проектов и решений стало занимать меньше времени.

Если включить Solution-Wide Error Analysis (SWEA) и отслеживание предупреждений (Monitor warnings), вы сможете значительно ускорить поиск ошибок, которые нужно исправить: используя результаты SWEA, Rider отфильтрует файлы и оставит для рассмотрения только те, в которых были найдены ошибки.

Также у нас хорошие новости для тех, кто не использует SWEA в своих решениях: теперь Rider использует все доступные ядра процессора и может выполнять анализ кода параллельно. Это сокращает общее время выполнения быстрых исправлений и контекстных действий.

 

Анализ кода для файлов с объемными методами стал работать намного быстрее. К объемным методам относятся:

  • методы с большими или вложенными условиями, кортежами или выражениями switch;
  • методы с большим количеством проверок (если cсылочные типы, допускающие значение null, не разрешены);
  • методы с частым использованием индексаторов (если cсылочные типы, допускающие значение null, разрешены);
  • методы с огромным количеством замыканий (если cсылочные типы, допускающие значение null, разрешены).

Вставка SQL-кода

Появилось еще больше возможностей вставки фрагментов SQL в код на C#: мы поддержали множество сценариев.

Запросы SQL корректно обрабатываются для методов string.Format, интерполяции и простой конкатенации строк.

Использование переменных SQLParameter для параметров в запросах SQL при работе с диалектом Microsoft SQL Server или библиотекой Dapper больше не приводит к ошибке.

Разработка игр

Unity

Мы существенно обновили поддержку файлов Assembly Definition. Используйте сочетание клавиш Ctrl+Click, чтобы перейти к ссылке, искать использования определений сборки по всему проекту (даже в ссылочных пакетах), переименовывать определения сборки и пользоваться автодополнением при добавлении ссылок.

Кроме того, теперь Rider умеет выполнять преобразование GUID-ссылок в именованные и наоборот при нажатии Alt+Enter, а также отображать подсказки с именем целевого определения сборки.

Rider подсвечивает код, нарушающий ограничения define constraints, в файлах Assembly Definition. Благодаря этому легко увидеть, почему та или иная сборка была исключена. Также вы можете пользоваться автодополнением для символов define.

Настраивать version defines также стало проще благодаря автодополнению для имен пакетов и встроенной подсказке для текущей версии. Также Rider подсвечивает символы, если условие не выполнено.

Новая версия Rider отображает исходные файлы из ссылочных пакетов Unity в специальном контексте. Вы увидите, какие символы были определены на момент компиляции пакетов. Благодаря этому исходные файлы будут отображаться с правильной подсветкой веток препроцессинга.

Используя атрибут Unity [Tooltip], можно добавить текст, который будет отображаться в инспекторе при редактировании полей, а также во всплывающем окне быстрого просмотра документации при использовании сериализованных полей. Кроме того, появилось контекстное действие для создания подсказок из XML-документации и наоборот.

Выполнять отладку через USB теперь можно на iOS-устройствах с чипом Apple silicon. Кроме того, в этой версии также появилась поддержка Linux.

При индексации ассетов теперь учитывается содержимое ссылочных пакетов, то есть Rider может находить использования кода в префабах на основе ассетов из пакетов.

Трассировка метафайлов была полностью переработана и учитывает больше сценариев использования. Она прекрасно работает при добавлении, удалении, перемещении или рефакторинге файлов в окне Unity Explorer.

В новой версии мы внесли ряд важных исправлений: обновление индекса ассетов при изменении файла внешними приложениями, открытие файлов Unity на устройствах с Apple silicon, обновление анализа Burst в соответствии с изменениями в компиляторе Burst и многое другое. Также Rider теперь быстрее находит установленные версии Unity и обновляет окно просмотра лога Unity.

Unreal Engine Ранний доступ

Тесты Unreal Engine

Если вы добавляете тесты с помощью фреймворка тестирования Unreal Engine, Rider сам запустит их отобразит результаты в окне Unit Test. Здесь можно просмотреть результаты тестов и при необходимости выполнить их еще раз (выборочные, только упавшие или все подряд). Кроме того, тесты можно сгруппировать по назначенным флагам.

Подробнее

Пока что Rider для Unreal Engine доступен в рамках программы раннего доступа. Однако он уверенно движется в сторону релиза. Сейчас его можно установить как отдельную сборку. Чтобы получить дистрибутив, заполните форму.

Фреймворки

WPF

В новой версии предпросмотр XAML доступен для приложений, использующих в качестве целевых SDK .NET 6, .NET 5 и .NET Core 3.x. Вы можете заранее посмотреть на результаты любых изменений XAML-кода прямо в Rider.

Xamarin

  • В редакторе Plist editor реализована поддержка стандартных схем Xcode. Благодаря этому Rider предлагает удобные имена ключей, валидацию значений по типу ключей, а также список ключей при добавлении нового ключа в plist. Эти схемы работают и в macOS, и в Windows.
  • Компоненты Android теперь можно скачать как пакеты NuGet прямо из редактора.
  • Новая версия позволяет использовать библиотеки AndroidX в проектах, которые их поддерживают.
  • Улучшен интерфейс редактора Android.

Очистка, форматирование и стиль кода

Форматирование и очистка кода при сохранении

Мы добавили настройку Reformat and Cleanup on Save. Эта функция позволяет форматировать и очищать код при явном вызове действий Save и Save All в IDE. При неявных триггерах сохранения (например сборка, переключение на другую вкладку или коммит) код не форматируется: Rider просто добавит измененный документ во внутренний список файлов, очистка и форматирование которых будут выполнены при следующем явном сохранении данных. Надеемся, эта функция поможет сделать код аккуратнее без лишних хлопот.

Включить и настроить эти действия можно в разделе Preferences/Settings | Tools | Actions on Save. Здесь можно выбрать профиль очистки. Список профилей тот же, что и на странице Preferences/Settings | Editor | Code Cleanup. Можно также указать, применяется ли действие ко всему файлу или только к измененным строкам.

Кроме того, действие Reformat and Cleanup on Save учитывает настройку Do not format. Настроить файлы и директории, для которых форматирование не выполняется, можно на вкладке Preferences/Settings | Editor | Code Style | Formatter.

Другие улучшения

Функция Reformat and Cleanup может обрабатывать несколько файлов и директорий, выбранных в окне Solution Explorer.

Расширены возможности форматирования:

  • можно настроить отступы перед скобками для лямбд и паттернов свойств внутри условий операторов (например if() и while()).
  • можно настроить выравнивание условий внутри скобок для if(), foreach() и т. д. Эта возможность включена по умолчанию.
  • для бинарных паттернов можно настроить обертку, выравнивание, отрицательные отступы и удаление последнего символа. Пример: x is Foo or Bar or Baz.

Начиная с SDK .NET 5, можно настроить параметры анализа Visual Studio с помощью глобальных файлов AnalyzerConfig. Rider 2021.3 считывает из них информацию о стиле кода и соответствующим образом редактирует правила Rider.

Веб-разработка

Новая инспекция для обновления зависимостей

Rider 2021.3 позволяет обновить npm-пакеты до новой версии прямо из редактора! Откройте файл package.json, установите курсор на версию пакета, который нужно обновить, нажмите Alt+Enter и выберите Update ‘имя пакета’ to the latest version. Кроме того, при наведении курсора на версию пакета отобразится быстрое исправление. Подробнее о том, зачем была добавлена эта инспекция, читайте в нашем блоге.

Улучшенное автодополнение кода для HTML

Мы улучшили работу автодополнения в HTML-файлах. Теперь при вводе имени тега или аббревиатуры либо при вызове автодополнения Rider показывает подходящие варианты сразу же. Раньше нужно было сначала ввести символ <. Кроме того, в новой версии лучше работает функция автодополнения для мнемоников.

Поддержка NuGet

Rider может создавать Binding Redirects для пакетов NuGet в проектах .NET Framework. Если в проекте нужно использовать Binding Redirects, Rider добавит их в файл App.config или Web.config.

Binding Redirects создаются при установке или обновлении пакета NuGet. Кроме того, их можно в любой момент создать вручную, выбрав Tools | Generate Binding Redirects в контекстном меню проекта в окне Solution Explorer.

На вкладке Applications страницы Properties появилось свойство Auto-Generate Binding Redirects. Оно требует от MSBuild создать Binding Redirects во время сборки проекта, если в файле App.config нет настроек перенаправления.

Помимо поддержки Binding Redirects, мы немного улучшили интерфейс. Теперь пакеты NuGet можно удалить прямо в окне Solution Explorer.

Поддержка процессоров Apple silicon

Начиная с этого релиза, в Rider реализована поддержка компьютеров Mac с процессорами Apple silicon. Rider 2021.3 использует следующие среды исполнения:

  • совместимая с Apple silicon JetBrains Runtime для фронтэнда;
  • .NET6 RTM для бэкенда;

И больше никаких трансляций x64-to-ARM64! Теперь Rider работает на чипах Apple очень быстро.

Поддержка F#

Главная новость: Rider поддерживает F# 6! Кроме того, в этой версии появилось много важных улучшений, касающихся автодополнения кода, рефакторингов, навигации и других аспектов поддержки языка.

Заметно улучшен рефакторинг Introduce Variable: теперь он предлагает при необходимости деконструировать кортежи и отдельные типы union, а также использовать типы вычислений в вычислительных выражениях. Еще он рекомендует использовать ключевые слова use и use! там, где это применимо. Кроме того, мы улучшили размещение дополнительных привязок.

Вас ждет несколько изменений в автодополнении кода: улучшен порядок предлагаемых вариантов и первоначальная фильтрация ключевых слов на основе контекста (некоторые ключевые слова теперь не показываются в неподходящих ситуациях). Использовать рекурсивные функции F# стало проще: не нужно возвращаться и вручную добавлять rec к контейнерной функции.

Есть еще одно важное изменение в автодополнении: при автодополнении шаблонов размеченных объединений Rider предложит сопоставить с шаблоном их поля.

Новые значки в результатах Find Usages помогут отличить вызовы, частичные применения, паттерны и другие типы использований.

Новая версия Rider позволяет правильно расширять выделение внутри интерполированных строк. Special thanks to Andrew Rublyov for this contribution! Также стало удобнее выделять фрагменты, содержащие символы _ и различные типы скобок.

Мы дополнили поддержку F# новыми быстрыми исправлениями, рефакторингами другими улучшениями. Please take a look at the full release notes for more information.

Плагины

dotCover
dotUltimate

Появилась новая метрика Code Vision — Covering tests. Она отображается, если у Rider есть информация о покрытии проекта тестами и если метод (либо свойство, индексатор или событие) покрыт хотя бы одним тестом.

Чтобы включить или отключить метрику, перейдите в раздел Settings/Preferences | Editor | Code Vision.

Теперь юнит-тесты можно запустить из всплывающего окна, которое появляется, если щелкнуть по строке покрытия в левой части редактора кода.

dotTrace
dotUltimate

Плагин dotTrace позволяет собирать данные об асинхронных вызовах на macOS и Linux. Эти данные доступны в режиме профилирования Timeline. Также асинхронные вызовы (await, continuation и др.) теперь можно посмотреть в дереве вызовов Call Tree.

Плагин dotTrace теперь умеет профилировать дочерние процессы приложений на macOS и Linux. Для этого вам нужно включить режим профилирования Timeline. Эта возможность поддерживается только для приложений .NET 5+.

Навигация и поиск использований

Новые значки на полях редактора

На полях редактора появились новые значки, позволяющие перемещаться по иерархии наследования класса, интерфейса или структуры. Значки ↑O/↑I указывают на наследование/реализацию сущностью другого класса или интерфейса. Если иерархия наследования сложнее, нажмите на значок — в открывшемся меню будут перечислены все предки (полная иерархия). Если класс одновременно реализует/наследует и интерфейс, и класс, на полях редактора отобразится иконка ↑IO.

Теперь Rider по умолчанию отмечает на полях члены классов. Если член класса переопределяется в производных классах, напротив него на полях редактора слева отобразится значок ↓O. Нажмите на значок, чтобы:

  • перейти к переопределяющему члену производного класса,
  • просмотреть список других переопределяющих членов классов.

Действие Find Usages для пользовательских операторов неявного преобразования

Теперь действие Find Usages работает для операторов неявного преобразования, заданных пользователем. Для этого используется тот же механизм, что и для подсказок при преобразовании типов.

С помощью Find Usages вы можете искать использования операторов неявного преобразования, заданные пользователем, и затем напрямую переходить к соответствующим фрагментам кода.

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

Поддержка баз данных

Агрегирование в редакторе данных

Мы добавили возможность выбрать режим Aggregate для просмотра диапазона ячеек. Он поможет управлять данными, позволит не писать дополнительные запросы и даст вам новые возможности из арсенала Excel и Google Spreadsheets.

Выберите диапазон ячеек, к которому вы хотите применить агрегатные функции, кликните по нему правой кнопкой мыши и выберите Show Aggregate View..

Соотнесение источников данных DDL с реальными

В предыдущей версии появилась возможность создавать источники данных DDL на основе реальных. Мы продолжили развивать это направление, и теперь процесс поддерживается полностью. Вы можете:

  • создавать источники данных DDL на основе реальных (читайте про релиз DataGrip 2021.2);
  • соотносить источники данных DDL с реальными;
  • сравнивать и синхронизировать их (в обе стороны).

Напоминаем, что источник данных DDL — это виртуальный источник данных, схема которого основана на наборе SQL-скриптов. Сохраняя эти скрипты в системе контроля версий, вы по сути сохраняете в ней схему вашей базы данных.

В настройках конфигурации данных появилась новая вкладка DDL mappings, на ней можно соотнести виртуальные источники данных с реальными.

Новое окно сравнения баз данных

Окно для сравнения баз данных теперь можно открыть из контекстного меню. У него улучшен интерфейс, и результат синхронизации будет четко отображаться справа.

Здесь же указывается, что обозначают различные цвета:

  • зеленый курсив — объект будет создан;
  • серый — объект будет удален;
  • синий — объект будет изменен.

Вкладка Script Preview показывает результирующий скрипт. Вы можете запустить его в этом же окне либо открыть в новой консоли. Выполнив скрипт, вы преобразуете базу данных справа (целевую) в идентичную базе данных слева (исходной).

Кроме Script preview в нижней панели есть еще две вкладки: Object Properties Diff и DDL Diff. В них показана разница между исходными объектами и объектами целевых баз данных.

Другие возможности

Свойства проекта

В диалоге Project Properties появились новые настройки:

  • можно настроить значок приложения в разделе Resources на странице Application;
  • на новой странице Build Events можно задать команды, которые будут выполняться до и после сборки;
  • на странице Inspections появились новые свойства, касающиеся анализа кода: Localizable, Localizable inspector и Solution-Wide inspections;
  • на странице Reference Paths можно настроить пути ссылок для проекта;
  • на вкладке Applications появилось свойство Auto-Generate Binding Redirects. Подробнее о поддержке Binding Redirects читайте в разделе Поддержка NuGet (выше).

Свойства решения

В таблице диалога Solution Properties появился столбец Dependencies: здесь указываются зависимости для каждого проекта. Во избежание циклических зависимостей, выбрать некоторые проекты невозможно.

Конфигурации запуска

Начиная с версии 2021.3, при загрузке проекта Rider импортирует все файлы .pubxml из Properties/PublishProfiles и преобразует их в Run-конфигурации. При добавлении нового файла .pubxml соответствующая Run-конфигурация создается автоматически — вам больше не придется делать это вручную!

Чтобы указать среду для выполнения приложения, теперь можно использовать специальный селектор. Доступные среды зависят от вашей операционной системы. Полный список включает: .NET/.NET Core, .NET Framework и Mono.

Поддержка атрибута EditorBrowsable при автодополнении кода

Теперь в списке вариантов автодополнения элементы могут быть отфильтрованы в соответствии с атрибутом EditorBrowsable. Для этого перейдите в раздел Preferences | Editor | General | Code Completion и выберите нужную опцию в поле Filter members by EditorBrowsable attribute.

Изменение размера шрифта во всех вкладках

По вашим просьбам мы сделали так, чтобы можно было изменить размер шрифта во всех вкладках одновременно с помощью сочетания +колесико мыши в macOS и Ctrl+колесико мыши в Windows и Linux. Чтобы включить эту функцию, в меню Preferences / Settings | Editor | General поставьте флажок Change font size with Command + Mouse Wheel in, а затем выберите настройку All editors. Если выбрать вариант Active editor, сочетание клавиш будет менять размер шрифта только в текущем файле.