About This Guide
This guide is split into several parts, similar to a textbook. Each one builds on the content of the previous section, but it is not necessary to read the guide in order. The Key Topics page aims to link to the pages that are necessary to be able to understand the architecture and get started building plugins.
All source links and reference lists target ReSharper Platform 2022.2.1.
Part I — Plugins
Describes how to create a plugin that can extend the ReSharper Platform. Includes details on how to set up the project, update to new versions of the ReSharper Platform, and how to package, deploy, and test your plugins.
Part II — Platform
Describes the foundational layer of the architecture, which provides many features and utilities, such as the component model, the user interface, documents and editors, settings, threading, zoning, and background tasks. The Platform layer mainly comprises the functionality of the ReSharper Platform that does not target language features or parsing.
Part III — Project Model
Documents the Project Model, which represents the files and configuration of the currently loaded solution, as well as the build system used to build the project.
Part IV — PSI
The Program Structure Interface (PSI) builds the syntactic and semantic models for lots of different file types. This section describes how to work with the PSI, navigating and manipulating the syntax trees, and also looks at the powerful reference system, which allows a syntax tree node to reference an item in the semantic model.
Part V — Features
Describes how to extend and interact with various features that use the PSI layer, such as code completion, navigation, Alt+Enter items, context actions, refactorings, and more. See also the section on Custom Languages below for language-specific features that are only applicable when adding support for a new language.
Part VI — Testing
Describes the available infrastructure for writing automated tests covering the functionality of plugins.
Part VII — Custom Languages
This section describes how to add support to the ReSharper Platform for a new language that isn't supported by default, creating parsers, syntactic and semantic models, and all the features that build on top.
Part VIII — Product Specific
A lot of the functionalities in the ReSharper Platform are product agnostic. This section describes product-specific features, such as specific project model differences and how to target them in a plugin.