

In the past, we recommended using interval notations for that. Secondly, specifying the range of compatible waves lets you indicate which versions of the products are compatible with the plugin. First, it will help us verify that a package is indeed an extension for ReSharper. Specifying the wave name as a dependency in your plugin can benefit you in two ways. For example, for the first major release of 2023, the wave name is “wave 231”, and the third one for 2022 is “wave 223”. To name a wave, we take the last two digits of the year of the release and add a single digit indicating the number for the release in that year. Internally, we call our major releases “waves”. With the introduction of the API verifier, we’re also changing our requirements for specifying dependencies pertaining to product version compatibility. ReSharper 2023.1 is actually the second version of ReSharper to incorporate the API verifier, so all plugins that have been compatible prior to the 2023.1 release will be preserved.
Resharper for 2022 verification#
Those plugins that do pass the API verification will automatically migrate to the next version of the product.

It will, however, remain on the list of installed plugins in the Extension manager inside ReSharper.

Should the API verifier raise any red flags, the plugin will be marked as Incompatible and won’t be included with the installed product. It is at this stage that we now detect if a plugin uses an API that’s been altered or is no longer available in the latest version of ReSharper. During the installation process, all parts are combined to form one installation. In ReSharper, we treat each plugin as an essential part of the product. That is how we got started with the idea of getting ReSharper’s platform to automatically detect changes in the APIs its plugins reference. It was not lost on us that sticking with this approach made the job of plugin writers maddening, and we knew things had to change. Due to our internal refactorings, we could not guarantee seamless migration.īoth ReSharper and Rider have major releases three times a year, which means that until recently, plugin developers were forced to recompile their plugins at least three times a year. For years, we’ve declared every new version of ReSharper as incompatible with the installed plugins, even if the set of APIs they reference hasn’t technically changed. It also makes huge refactorings like preparing ReSharper for the out-of-process mode or preparing our codebase for integration into Fleet much harder. But there’s a flip side to such freedom.įollowing the “each public component is an extension point” strategy limits our ability to refactor the existing code. That means that any component of ReSharper is like a building block that can be overridden with plugins, opening up virtually limitless possibilities for fine-tuning every aspect of ReSharper’s behavior.Īs a plugin author, you get to take advantage of each and every component that ReSharper developers themselves use. ReSharper’s development team uses the dependency injection approach to design every aspect of the product. Despite being a plugin itself, ReSharper serves as an incredible platform for plugin creation.
