ReSharper предоставляет ряд возможностей, которые применяются на уровне проектов или всего решения, а не для помощи при редактировании кода отдельным разработчиком.
К этим возможностям относятся: ReSharper Build, позволяющий оптимизировать компиляцию проектов с помощью MSBuild; диаграммы, которые отображают зависимости между процессами и типами и позволяют находить код, реализующий эти зависимости; рефакторинги для оптимизации зависимостей в проектах, входящих в решение, и многие другие возможности.
ReSharper Build — это инструмент инкрементной сборки вне процесса, который позволяет использовать для сборки несколько процессов и визуализировать различные состояния сборки проекта. Этот инструмент оптимизирован для крупных решений с большим количеством зависимостей.
ReSharper Build заменяет управление сборкой в Visual Studio эвристической системой, позволяющей собирать только те проекты, которые нуждаются в обновлении. Обратите внимание, что MSBuild при этом не подменяется и проекты собираются обычным образом.
Конфигурации запуска ReSharper предоставляют новые способы исполнения кода в Visual Studio. Существуют три вида конфигураций запуска:
Статические методы также можно исполнять без создания конфигурации запуска на постоянной основе: достаточно нажать Alt+Enter и выбрать подменю Debug в списке действий.
Чтобы запустить или отладить активную конфигурацию, т. е. startup project, используемый в Visual Studio по умолчанию, можно нажать Ctrl+F5 или F5. Для управления конфигурациями запуска можно нажать Ctrl+Shift+Alt+R или вызвать команду меню ReSharper | Tools | Run Configurations.
ReSharper позволяет исследовать зависимости проектов в решении с помощью визуального представления архитектуры решения. В любой момент можно открыть окно «Architecture View» (ReSharper | Architecture | Show Project Dependency Diagram) и исследовать зависимости проектов, ничего не компилируя.
Прямо в этом представлении можно выполнять рефакторинги (например, Adjust Namespaces или Remove Unused References), действия навигации и другие команды. Кроме того, можно сохранить снэпшот зависимости и сравнивать его с текущим состоянием решения по мере его развития.
ReSharper позволяет исследовать визуальное представление взаимных зависимостей типов в решении. На диаграмме зависимостей типов можно собрать любое количество типов из разных проектов или скомпилированных сборок и визуализировать зависимости разных видов между ними. Добавлять типы на диаграмму можно командой главного меню ReSharper | Architecture | Show Type Dependency Diagram и еще целым рядом способов. Например, можно добавить все типы из окна Find Results или Hierarchy, из всплывающих окон с результатами навигации, из диаграммы зависимостей проектов; можно перетащить типы из других окон инструментов и т. д.
Как и на диаграмме зависимостей проектов, диаграмма зависимостей типов предоставляет доступ к множеству действий навигации и рефакторингу Move to Folder, который в этом окне работает с перетаскиванием.
ReSharper также позволяет исследовать зависимости между скомпилированными сборками. Можно создать диаграмму по любому количеству сборок и изучить их ссылки друг на друга.
В Assembly Explorer можно вызвать диаграмму для выделенных зависимостей и выяснить, какие связи установлены между сборками через взаимные ссылки.
В ReSharper можно искать типы или пространства имена в галерее пакетов NuGet и устанавливать пакеты, удовлетворяющие критериям поиска, — не выходя из Visual Studio. Все это можно делать в окне NuGet Browser (ReSharper | Windows | NuGet Browser).
Поиск можно даже запустить прямо из редактора: достаточно нажать Alt+Enter на любом неразрешенном типе или пространстве имен и выбрать Find on nuget.org, чтобы найти и установить недостающий пакет NuGet.
Некоторые рефакторинги можно применять на уровне проекта, отдельной папки или всего решения.
Например, рефакторинг Adjust Namespaces позволяет синхронизировать пространства имен со структурой папок в любом масштабе вплоть до решения в целом. Это значит, что если определенном файле пространство имен не соответствует расположению файла в структуре проекта, такое пространство имен переименовывается в соответствии с расположением файла. Все директивы using, ссылающиеся на измененные пространства имен, соответствующим образом корректируются.
Еще один рефакторинг на уровне проекта — Remove Unused References — позволяет выявлять избыточные ссылки в проектах и очищать от них решение.
Также существует способ маркировать ссылки как используемые во время выполнения, что важно при использовании фреймворков для вставки зависимостей.
Маркировка всех неявно загружаемых зависимостей позволяет безопасно выполнять команды ReSharper Optimize Referencesи Remove Unused References без нарушения ссылок, необходимость в которых возникает во время выполнения.
Команда Find Dependent Code находит код, зависящий от выбранного проекта. Команда Find Referenced Code является обратной по отношению к ней и позволяет находить все исходящие ссылки, обнаруженные в определенной области (от одного метода до целого проекта).
Результаты поиска для обеих команд выводятся в окне Find Results, а если найденное использование единственное, курсор переводится в соответствующее место в коде.
Чтобы найти зависимый код или код по ссылке, необходимо выбрать узел в окне Solution Explorer или расположить курсор на контейнере в текстовом редакторе, а затем вызвать команду меню ReSharper | Find | Find Code Dependent on Module или ReSharper | Find | Find Symbols External to Scope.
В этом простом окне можно открывать скомпилированные сборки, пользоваться командами навигации и поиска и исследовать эти сборки, как будто это исходный код. В развернутых узлах сборок отображается список пространств имен данной сборки, который можно развернуть далее для просмотра типов и членов типов, а также ссылок сборки.
Если определенная сборка представляет особый интерес, Assembly Explorer позволяет экспортировать ее в проект Visual Studio для просмотра исходного кода, сборки, запуска и отладки.
ReSharper расширяет возможности Visual Studio при управлении состоянием узлов в Solution Explorer. При свертывании узла проекта или другого узла высокого уровня в Solution Explorer стандартная Visual Studio не сворачивает вложенные узлы. В результате при дальнейшем развертывании узла проекта отображается смесь свернутых и развернутых узлов.
ReSharper позволяет щелкнуть правой кнопкой мыши по узлу Solution Explorer и выбрать команду контекстного меню Collapse All — выбранный узел сворачивается вместе со всеми дочерними узлами.
Collapse All удобно использовать с другой возможностью ReSharper — Locate in Solution Explorer. Например, можно свернуть проект, а затем вызвать команду Locate in Solution Explorer и развернуть узлы, которые действительно необходимы.
Эта удобная возможность навигации, вызываемая сочетанием клавиш Shift+Alt+L, позволяет подсвечивать в Solution Explorer узел, соответствующий любому файлу, открытому в текстовом редакторе. ReSharper подсвечивает узел и автоматически прокручивает Solution Explorer так, чтобы подсвеченный узел был виден.
Это особенно удобно, если решение огромно и в нем от десятков до тысяч файлов, либо если ограниченное пространство на экране заставляет предельно ужимать окно Solution Explorer. Кроме того, эту функциональность удобно использовать вместе с командой Collapse All в Solution Explorer.
Параметры ReSharper сохраняются в соответствии с моделью распределенного хранения, т. е. все параметры или группы параметров можно сохранять по отдельности, а ReSharper комбинирует их и применяет все вместе при запуске.
Эта модель позволяет, среди прочего, использовать разные параметры для разных решений, использовать один набор параметров для нескольких пользователей, импортировать и экспортировать параметры и т. д. Это особенно удобно в случае, если всей команде нужно использовать одинаковые параметры: настройки стиля кода, шаблоны кода, паттерны структурного поиска и замены.
По умолчанию предусмотрено три уровня параметров: для всех решений на локальном компьютере, для текущего решения, для совместно используемых параметров решения. Однако также нетрудно создать, настроить и предоставить для совместного использования новые уровни, например для глобальных параметров, действующих в рамках компании.
Все сочетания клавиш, приведенные на этой странице, соответствуют набору сочетаний «Visual Studio», использующемуся в ReSharper по умолчанию. Подробнее о двух наборах сочетаний клавиш, доступных в ReSharper, вы можете узнать в его документации.