Welcome to the ReSharper Plugin Development Guide! This guide has been written in order to help new and experienced developers write their own plug-ins using the Open API provided by ReSharper.
From a plug-in developer’s perspective, ReSharper is a set of lexers and parsers for particular languages, as well as an infrastructure layer that allows for safe and consistent manipulation of these structures under the confines of Visual Studio. ReSharper comes with a wealth of features that we all know and love, but underneath all its features is an infrastructure that can be leveraged by you, the plug-in developer, to create any additional feature you may need.
Before we dive into code (and it will be a very deep dive, let me assure you), we need to discuss the question of why. What is the motivation for writing ReSharper plug-ins in the first place? Typical examples would include adding support for a particular unit test framework or, e.g., support for a particular IoC (Inversion of Control) container. But that’s not all! Given the wide variety of features that ReSharper supports, the API offers practically
limitless potential in terms of adding in useful features. You can write something as simple as a context action, or something as complex as support for a new programming language.
With all that, I welcome you to the field (and challenge) of ReSharper plug-in development. May the Force be with you!