Welcome to the ReSharper 6 Plugin Development Guide. This guide has been written in order to help new and experienced developers write their own plug-ins using the API provided by ReSharper.
But what is ReSharper, really? From a plug-in developer's perspective, ReSharper is a set of lexers and parsers for particular languages and mixed-language formats, as well as an infrastructure layer that allows for safe and consistent manipulation of these structures under the confines of Visual Studio. Don't get me wrong - 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, i.e., what is the motivation for writing ReSharper plug-ins in the first place? Looking at the plug-ins already out today, one can confidently say that the primary use case for a ReSharper plug-in is to add support for a particular unit test framework. But that's not all! Given the wide variety of features that ReSharper supports, its 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 full 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!