Project Rider – A C# IDE

Today, at NDC London, we announced a new project that we’ve been working on for a little while – a cross-platform C# IDE, based on the IntelliJ Platform and using ReSharper technology.

Under the codename Project Rider, the IDE includes a lot of functionality that you are already familiar with from ReSharper and IntelliJ-based IDE’s, such as Quick Fixes, Inspections, and Smart Navigation. And while ReSharper is hosted inside Visual Studio, Project Rider is a full, standalone IDE.

While it’s still quite early, the following features are already available:

Navigation – smart navigation is a major feature of JetBrains IDEs, and Project Rider is no different, offering the standard Go To Type, Go To File, and integrating with IntelliJ Platform’s “Search Everywhere” feature to go to symbols, types, files and even search in settings and actions.

Rider Search Everywhere popup

The Navigate To popup menu is also available, giving access to navigate base/derived symbols in a class hierarchy, or to find usages, with the results displayed in the standard IDE tool window.

Rider Navigate To context menu
Rider Find Usages results

Editing – a wide range of smart editing features are implemented, from typing assist, such as inserting braces and automatic formatting, to Live Templates (including ReSharper 10’s postfix templates), quick info tooltips and gutter icons for inheritance navigation, context actions and so on.

Rider editing

Inspections – most of the inspections supported by ReSharper are displayed as errors, warnings, suggestions and hints in the editor. This includes red code for unresolved symbols, and underline highlights for code issues, and so on.

Rider inspections

Alt+Enter – no JetBrains IDE would be complete without Alt+Enter support, and most of the menu items from ReSharper’s quick fixes and context actions are available. Project Rider also supports applying bulk actions to a whole file, and changing the severity of an inspection directly from the menu.

Rider's Alt+Enter menu

Refactorings – a limited set of refactorings are available. Most refactorings require a user interface of some kind, and these haven’t been implemented yet. Project Rider can rename symbols and introduce/inline variable, as well as rewrite code in response to Alt+Enter on an inspection highlight.

Rider introduce variable

Decompiler – if you try to navigate to a type that you don’t have the source to, we’ll decompile it for you, and display what the C# source would like look.

Of course, as a standalone IDE, it also brings many other features to the table:

  • Multiple runtime support. Project Rider supports the .NET Framework and Mono, with CoreCLR support in the works. It can load MSBuild and Mono XBuild solutions, as well as DNX projects. It also includes templates for creating new projects. And when you create an empty project, it’s really empty!

Rider new project templates

  • Build, run and debug. One of the most important features of an IDE is debugging, and Project Rider is no exception. It can build and run .NET Framework, Mono and DNX projects, and can debug .NET and Mono apps – DNX debugging and CoreCLR support are coming. Any build errors are displayed in a Build tool window, and the Debug tool window is used for call stacks, variables and watch windows.
  • Cross platform. As well as running and debugging multiple runtimes, Project Rider itself runs on multiple platforms. It runs on Windows and Mac OS X (Linux too, but it’s mostly untested right now).

How does it work?

Project Rider is a standalone IDE built on the IntelliJ Platform, much like WebStorm, DataGrip and our other IDEs.

The difference however, is that instead of reimplementing ReSharper’s features on the IntellIJ Platform, which runs on the JVM, we’re using ReSharper in a headless mode, out of process, and communicating with it via a very fast custom binary protocol. As such, the backend continues to be ReSharper written in C# running on .NET or Mono, and the frontend is written in Kotlin, talking to the IntelliJ Platform’s APIs.

We’ll take a more in-depth look at the implementation details in a future blog post.

Why have we created a C# IDE?

Well you kept asking us, so we finally got around to doing it!

Jokes aside though, our main reason is to provide choice. We believe that we can provide a great user experience for developers that might be interested in using alternative environments.

So why now? Because we believe it is the right time due to several factors:

  • We’ve been working for several years in allowing ReSharper to work in different environments, independently of Visual Studio. An example of this is dotPeek.
  • It’s quite clear that there’s an ever increasing tendency of developers using non-Windows platforms, and we’d like to give them the same experience they’ve come to know and love with ReSharper.
  • Finally, Microsoft moving its platform and C# language towards Open Source, along with initiatives such as CoreCLR, have been an added incentive.

What does this mean for ReSharper?

ReSharper is still the number one extension for Visual Studio, and one of our flagship products. The fact that Project Rider is using ReSharper reinforces our commitment to ReSharper, as any updates to ReSharper mutually benefit not only ReSharper but Project Rider also. In addition, we’re hoping some of the work we’ve put into Project Rider can feed back into ReSharper.

In essence, Project Rider will only increase the efforts we put into ReSharper.

What will the licensing model be?

While it’s too early right now to comment on the specific details, the licensing model will be inline with our other products from the JetBrains Toolbox. We will take into account the many usage scenarios that might occur, when establishing pricing, such as someone wanting to use both tools, etc.

We hope to have the pricing information soon.

Roadmap

We’re starting out on the road to 1.0. We’re confident of the architecture, and believe we’ve built a good foundation to implement the features we want to see in a 1.0 release. We’ve got a lot of functionality already implemented, but we’ve still got a lot that we need to build.

We’re aiming to open a private EAP in the coming weeks, towards the end of February. We’ll announce the signup form here on the blog, as well as on Twitter.

Soon after the private EAP we’ll move to a public EAP. When this will happen very much depends on the feedback we get from the early testers. Our aim is to release sometime in Autumn 2016.

We are very excited with Project Rider and hope you share the excitement. If you have any questions, please, ask away. And don’t forget to follow @JetBrainsRider for updates!

P.S. Of course, if you’re at NDC London this week, pop over to the booth and we’ll be happy to show you Project Rider in action!

This entry was posted in News and Events and tagged , , . Bookmark the permalink.

17 Responses to Project Rider – A C# IDE

  1. Dave Huntley says:

    Awesome work guys. This is great to hear. Get the licencing right and this will be a huge win for .net devs. The money saved in VS licences alone should justify the move to DNX.

  2. Barry Hall says:

    Very exciting times! Will be following this with much interest. Congratulations to the teams working on this.

  3. efdee says:

    FINALLY.

  4. RevenantX says:

    What about https://github.com/consulo/consulo (C# ide based on IntelliJ Platform)?

  5. Thiago Garcia says:

    OMG *—-*
    That’s great guys!

  6. Stanislav says:

    Actually after looking at “Version 10.0” I understood that this is OLD toolset =)))))

  7. Keith says:

    Massive news, this is awesome :)

  8. Yuri Trukhin says:

    Awesome news! Please, add me to private EAP! I wait .NET IDE from JetBrains many years and want to test new features!

  9. Simon says:

    Yes, finally what I’ve been waiting for. Just tell me that this will be cross platform and am all for it.

  10. Christian Schmitt says:

    What about dotnet/cli? Microsoft will transition to https://github.com/dotnet/cli in the future
    See: https://github.com/dotnet/cli/issues/64

  11. Rafal Lewczuk says:

    Slightly off-topic. Are there any plans add official support for GO language (either as standalone IDE or plugin for CLion for example) ?

  12. Cool, will we see features like ASP.Net, Importing from VS. XAML Designer, etc.?

  13. Beck says:

    Will this support older versions of mono? Specifically for unity engine development. Even if not – this news has made my day

  14. Miloskov says:

    Finally after years waiting!!.

    I hope it supports web development with CoreCLR and DNX.

    Also, The blog says Cross platform tool, So I guess XAML with WPF is out, it is to windowish tech but maybe Xamarin forms could be those are cross platform.

  15. Awesome! Can’t wait to try it

Leave a Reply

Your email address will not be published. Required fields are marked *