What′s New in Rider

Rider 2018.2 supports publishing to IIS, adds Docker support to the debugger, integrates built-in spell checking, supports code coverage and continuous testing on Windows, and learns to play well with MacBook Touch Bar. This release comes with full C# 7.3 support, even more outstanding Unity support, better code completion, refined Solution Explorer, and more.

Download
Free 30-day trial

Rider 2018.2

Debugger enhancements

Debugger enhancements

Rider now displays call stacks that make use of modern C# features in an understandable way, including generic types, async function names, constructors, static methods, and other type information.

We’ve added thread-specific breakpoints to simplify the debugging of multi-threaded code. You can edit a breakpoint (using the context menu) and suspend only on a specific thread. The breakpoint will then only be hit when it is reached in the particular thread you are interested in.

The debugger includes a few other updates, too:

  • Inspecting and expanding unsafe pointers is supported.
  • Smart Step Into now correctly handles methods that are decorated with the [DebuggerStepThrough] attribute.
  • Debugger.NotifyOfCrossThreadDependency is supported.
  • We’ve added an option to automatically refresh all watches in the debugger tool window on every debugger pause.
  • Types in the Memory View window are now formatted in C# style instead of the CLR style

To learn more, see More meaningful call stacks, thread-specific breakpoints and other debugger improvements.

Publishing to IIS or FTP

Publishing to IIS or FTP

Rider introduces two new run configurations: Publish to IIS and Publish to custom server. Both serve the purpose of deploying our ASP.NET Core web application to a local or remote server, but they use different means to do this:

  • Publish to IIS uses MSBuild and MSDeploy to package and publish our application. This run configuration type can deploy our ASP.NET Core web application to local and remote IIS and to Kudu (Azure Web Apps), as well as create an MSDeploy package. Publish profiles come as .pubxml files.
  • Publish to custom server uses MSBuild and Rider’s built-in tooling to upload our application artifacts. This run configuration type supports using FTP and FTPS/SFTP to get our application out there. It is supported on Windows, Mac OS X, and Linux.

Right now, only publishing of ASP.NET Core Web projects is supported. Additionally, using the Publish to IIS run configuration type to deploy to IIS will only work on Windows.

To learn more, see Publishing ASP.NET Core web applications to IIS, FTP, and more with Rider.

Docker support has reached the debugger

Docker support has reached the debugger

Rider now supports debugging ASP.NET Core apps in a local (Linux) Docker container. Attaching the debugger to a Docker container helps validate our application locally in a Linux Docker container, which should closely resemble production.

Just like with debugging on our local machine, Rider allows inspecting variables, stack frames, and threads, as well as stepping through both our own code and decompiled third-party code.

Right now, only ASP.NET Core web applications may be debugged on Linux Docker containers. While Rider allows debugging containers that are built from a Dockerfile, it does not yet support debugging containers that are created using Docker compose (docker-compose.yml).

To learn more, see Debugging ASP.NET Core apps in a local Docker container.

Solution Explorer redesign

Solution Explorer redesign

A new toolbar lets us easily toggle the option to show all files, which will reveal all other files that are not part of the project model (highlighted in brown). The next two buttons allow us to synchronize the solution explorer and editor. Autoscroll to source reveals the selected files in the editor, while autoscroll from source selects files whenever we navigate from one file to another.

Rider 2018.2 introduces the File-system view in addition to the Solution view, which shows the actual file-system structure underneath our solution file. Items marked with no index are excluded from index-based features such as global text search or todo indexes. We’ve also merged the scratch view into both Solution and File-system views, which makes for easier access to recently created scratch files.

We’ve added a dialog to make configuring custom file nestings a lot easier. They work with SDK-based project files and the older format equally well, without any further requirements. With Rider 2018.2, file nestings can also be applied by using drag & drop from the file that should be nested to the new parent file.

With the latest version, there is also an option to show folders always on top, which may be a more natural presentation for some of us.

To learn more, see Solution Explorer and Project Model updates in Rider 2018.2.

Code completion

Code completion improvements

Rider now uses ReSharper’s statistics-based scoring algorithm to provide code completion. One of the key aspects of this is that Rider now keeps track of how many times a given code suggestion was used. The more a suggestion is used, the more likely it will be to show up in code completion.

We’ve expanded code completion to several places where it would be handy to get some help from Rider: scratch files, debugger watches, and C# Interactive. Just like when writing code in a regular C# or VB.NET file, Rider provides code completion as well as method info and parameter hint popups.

We’ve also added a handy feature for when you are trying to access a pointer type’s members in an unsafe context and the -> operator must be used instead of the . (dot). To help prevent unsafe code, Rider will detect it whenever we use the wrong operator, and when completing code, will use the correct one instead.

To learn more, see Code completion improvements in Rider 2018.2.

Unit test coverage and continuous testing

Unit test coverage and continuous testing

With each Rider release, we do our best to bridge the gap between Rider and the ReSharper Ultimate bundle. The top in-demand feature has certainly been Rider + dotCover; integration. In addition, Rider 2018.2 has unit test code coverage and support for continuous testing. dotCover is provided as a bundled plugin for Rider and installed along with Rider automatically.

All critical functionality is available:

  • “Classic” unit test code coverage analysis using Coverage Tree and code highlighting. Everything looks and feels exactly the same as in Visual Studio with ReSharper Ultimate.
  • Continuous testing in Rider is no different from ReSharper Ultimate. Simply enable it for the desired session, change the code, and build or save the project (depending on the preferences).

Please note that only Windows is supported at this time. Support for Mono is still a work in progress and not included in 2018.2.

To learn more, see Unit test coverage and continuous testing. Now in Rider!

Templates Explorer

Templates Explorer

One of the most wanted features which has been missing from ReSharper is finally added to Rider. Now, you can manage, add, or modify Live/Surround/File Templates right in the Rider settings under Editor | Live Templates and Editor | File Templates.

Please note that creating multifile templates is not yet supported.

MacBook Touch Bar support

MacBook Touch Bar support

Just like the other JetBrains IDEs, Rider has support for the MacBook Touch Bar. You can do lots of actions directly from the Touch Bar: run, build and debug your project, commit changes, and update the project. The context-dependent buttons are displayed in the app-specific area in the middle of the Touch Bar interface. You can customize the Touch Bar contexts and buttons under the Preferences | Appearance & Behavior | Menus and Toolbars | Touch Bar page.

Besides this, you can make the Rider title bars darker on macOS (Preferences | Appearance & Behavior | Appearance | select Use dark window headers).

Additionally, Rider also comes with brand new icons. The main goal of these new cleaner, simpler icons is to reduce visual mess and increase the readability of the toolbar and tool windows.

C# 7.3 support

C# 7.3 support

Rider finally supports all features from the latest C# 7.3:

  • Declaration expressions in initializers and queries.
  • Tuple equality.
  • Ref assignments.
  • Unmanaged, System.Delegate, and System.Enum constraints.
  • Stackalloc array initializers.
  • Pattern-based fixed statement.
  • Indexing movable fixed buffers.

Besides supporting the syntax, we’ve added new inspections and appropriate quick-fixes to make your code compatible with C# 7.3.

To learn more, see C# 7.3 in Rider and ReSharper.

Frontend development features

Frontend development features

TypeScript support was improved and now supports all the language features from the latest TypeScript 2.9/3.0 releases. Besides that, Rider now offers more quick-fixes provided by the TypeScript language service itself.

The following features were also added:

  • Extract and convert React component.
  • New integrations with Angular CLI.
  • Completion for events in Vue.js.
  • A bunch of new context actions in the AltEnter menu, e.g., Implement interface, Create derived class, Implement members of an interface or abstract class, Generate cases for switch, and Iterate with for..of.

To learn more, see WebStorm 2018.2.

Integrated spell checking with ReSpeller

Integrated spell checking with ReSpeller

This release comes with the ReSpeller extension to provide spell-checking functionality out of the box. Just like with code analysis, ReSpeller scans for spelling mistakes and typos in identifiers, comments, string literals, and more, and provides quick-fixes to resolve each detected problem. By default, ReSpeller is enabled for many of the languages Rider supports. A simple way to enable/disable individual inspections and change the severity of what it detects is to search for “typo” in the settings (you’ll end up in Preferences | Editor | Inspection Settings | Inspection Severity).

We can then invoke the AltEnter menu where ReSpeller gives us several options to fix our mistakes. In the menu, we can either fix the typo or add a new word to ReSpeller’s dictionary.

By default, the spell checker comes with a built-in dictionary for English (United States). It uses a dictionary based on Hunspell, which means you can install additional languages if you like.

To learn more, see Integrated spell checking with ReSpeller in ReSharper and Rider.

Unit testing

Unit testing

In this release, we’ve added several new features and made a few optimizations:

  • Discovering and running tests in SDK-styled projects has become faster.
  • A new lock/unlock icon has been added to Unit Test Session toolbar, now you can lock a Unit Test session to prevent adding more tests.
  • Run and debug tests are now possible even on Mono on Windows.
  • It is possible to open the Unit Test Explorer window from the Navigate To menu
  • Unit testing related actions have been added into the default keymap.
NuGet support

NuGet support

NuGet support in Rider 2018.2 includes filter and format customization in NuGet logs, and advanced diagnostics which will help you to understand what happened if something with a NuGet package went wrong.

As well as this, we’ve added support for the AutoReferenced packages and TLS-1.2-only NuGet feeds.

Support for project.json-based projects has been discontinued since such kinds of projects are quite outdated and we think it is time for us to move forward.

C# Interactive update

C# Interactive update

In Rider 2018.2, a new Reference in the C# Interactive context menu is available for projects and assemblies. It does exactly what it says: references the selected project or assembly in C# Interactive. Rider will generate the load statement for us and execute it at once. The C# Interactive tool window also comes with its own toolbar button to help reference projects in the current solution.

Rider now supports attaching the debugger to C# Interactive and steps through our own code when invoked from C# Interactive. No more need to write a console application or a unit test to quickly debug a snippet of code. All we have to do is reference our project and start debugging it with C# Interactive!

To learn more, see Add references and debug code snippets in Rider C# Interactive.

F# support

F# support

File Templates now work inside F# projects, generating files with boilerplate code is now as easy as it is in C#.

FSharp.Compiler.Service has been updated to receive several F# 4.5 features/changes, the most notable of which are:

  • Span support.
  • match! keyword.

And last, but not least, the interop with C# projects has been improved, including the following F# 4.1 features:

  • Struct annotations for Records and Unions.
  • Implicit Module suffix.
Improvements in Unity support

Improvements in Unity support

Outstanding Unity support in Rider becomes even more outstanding!

We’ve introduced full support for Unity Assembly Definition Files (.asmdef): JSON schema validation, code completion, Find Usages, Rename refactoring, Navigation on references elements, AsmDef file templates, and inspections/quick-fixes for self-reference and file name/assembly name mismatch. Also, Rider now supports Roslyn C# compiler response files (csc.rsp)

We’ve added an option to disable Unity Reload Assembles when Unity receives focus in Play mode (only for Unity prior to 2018.2, as 2018.2 has the same option natively).

From now on, you can open a Unity Editor/Player log directly in Rider, and here you have the actions available to filter and collapse similar log entries. All commands are available under the cog menu in the Unity Log tool window

Code Analysis has been significantly improved. There are lots of new inspections and appropriate quick fixes to improve your Unity code, and we have made a bunch of bug-fixes, most notable of which is the invalid warning for this == null in Unity types.

In addition to all this, support for debugging remote players has been improved, and Packages and Scratches nodes have been added to Unity Explorer.

Other features

Other features

  • A new Generate GUID action is available.
  • We’ve introduced initial support for .ruleset files. Enable it by going to File | Settings | Editor | Inspection Settings and selecting the check-box Read settings from editorconfig and project settings.
  • Settings from stylecop.json are no longer ignored and are taken into account during analysis.
  • VCS support now has several new features, such as: Resolve of merge conflicts with a new Merge Conflicts node in an easier way, enhancements in VCS Log tab, and explore the state of the repository based on any given revision.
  • Custom tools can now be specified for a file extension in Settings.
  • We’ve added more colors to the Parameter Info popup and the Summary tooltip for IntelliSense in C# and VB.NET
  • The Build settings icon is available on the toolbar in the Build tool window, leading you to the settings page Build, Execution, Deployment | Toolset and Build.
  • A Runtime arguments field has been added to .NET-related templates on Run/Debug Configuration for passing custom parameters to runtime.
  • The Re-run action is now available on the Find Usages tab.

To learn more, see Generating a GUID in Rider, colored parameter info, custom runtime arguments in Rider 2018.2.

Download
Free 30-day trial

Rider 2018.1

Roslyn analyzers support

Roslyn analyzers

Rider provides over 2400 code inspections in all supported languages to help you detect errors and code smells. In this release cycle, we have added even more power to improve your code quality – with Roslyn analyzers. If you have Roslyn analyzers installed in your projects via NuGet or .csproj references, Rider will highlight them in the editor and let you apply quick actions (if available) via the AltEnter menu.

Support for Roslyn analyzers is enabled and included in Solution-Wide Analysis by default. Related settings can be configured under Editor | Inspection Settings | Roslyn Analyzers. All analyzers have configurable severity levels, which can be adjusted to your needs via a context menu or the AltEnter popup. The light bulb in the gutter will show the Roslyn logo so you can distinguish between Roslyn's and Rider's code analysis.

To learn more, see Roslyn analyzer support in Rider 2018.1 EAP.

Entity Framework support in Rider

Entity Framework

Rider 2018.1 brings initial Entity Framework support in .NET Framework projects. It is available under Tools | Entity Framework and includes the following functionality:

  • Support for the most popular versions of Entity Framework: 6.0 to 6.2;
  • Initial Setup, Enable Migrations, Add Migration, Get Migrations, and Update Database actions available as dialog boxes;
  • Smart code completion for fields in the dialog boxes filters the suggestions list and shows only applicable projects, types, and names.

To learn more, see Entity Framework support in Rider 2018.1.

Unity game view toolbar and Unity Logs tool window

Deeper integration with Unity

Rider's support for Unity gets better with every release. In this release cycle, we've focused on reducing the time you spend on context switching between Rider and Unity Editor.

You can now switch into and out of Play mode, and pause and step a single frame without leaving Rider! A new toolbar includes game view buttons Play, Pause, and Step, which correspond to the same buttons in Unity Editor and control the same behavior as Unity Editor does. A new small Unity icon in the status bar will indicate whether Unity Editor is connected, refreshing, or in Play mode. Any changes applied in Rider in Edit mode will be instantly delivered to Unity Editor.

The new Unity Logs tool window with hyperlinked stack traces lets you explore the same events that are logged in the Unity Editor console. It allows filtering by category (error, warning, or message), hides events based on when they were logged (in Play or Edit mode), and lets you easily navigate to any source file, class, method, or property mentioned in the log entry. Unity Logs cleans its output automatically after every switch to Play mode.

Rider 2018.1 also provides seamless integration with Unity Test Runner. Explore the results of your Unity-specific tests, filter by result, and click on stack traces to navigate to your code — all from within Rider.

Last but not least, we've added a Unity Explorer view that duplicates Unity Editor's view of assets, to make you feel right at home.

To learn more, see:

XAML preview

XAML preview

The WPF Application project type implemented in Rider 2017.3 has received a missing fragment — a built-in mechanism to preview the results of any change you make in XAML code.

XAML Preview settings are available under Tools | XAML Preview. It is possible to turn the preview off, set the quality of the rendered image, and configure transparency.

To learn more, see XAML preview tool window for WPF in Rider.

Memory view in debugger

Memory view in debugger

A new debugger feature called Memory View allows you to look under the hood of an application and explore the managed heap while debugging, to understand the effect of code on the application's memory space.

When the debugger hits a breakpoint, you can open the Memory View in a separate tab of the Debugger tool window. Rider will show the total number of objects in the heap, grouped by type name and bytes consumed. Double click on a class item to see all instances in a separate window. You can also get there from the code editor by hitting AltEnter on any class declaration and selecting Show instances of class.

Memory View works with the full .NET Framework (4.5+) as well as .NET Core. Mono is not supported yet.

To learn more, see Memory View – Exploring .NET memory while debugging with Rider 2018.1.

Exception popup in action

More debugger updates

Debugging in Rider gets quite a few more lovely improvements:

  • Exploring exception details gets easier with the new exception popup. It shows basic information about a thrown exception and helps you quickly navigate through the highlighted stack traces of the exception. In addition, you can change exception breakpoint settings right inside the popup.
  • Smart Step Into has been combined with Jump to Statement, which means that already executed calls can be executed again.
  • Symbol server support allows you to configure the behavior of symbols and symbol servers. Set this up in Build, Execution, Deployment | Debugger | Symbols.
  • Rider learns to display the source code for return value locals in the Variables view (a.k.a "locals") of the Debug tool window.
  • Debugger's Attach window displays process names and IDs and suggests elevating permissions when elevation is required. (Note: right now this works only for .NET Framework on Windows.)
  • Attaching to local process gets faster.

To learn more, see Exception popup, improved Smart Step Into, symbol servers, and more Rider 2018.1 EAP debugger updates.

NuGet improvements

We've improved support for authenticating against private NuGet feeds in several ways:

In a related change, we've added initial support for bulk NuGet operations. You can update all packages in solution with a click of a new button on the toolbar in the NuGet Packages tab. It is also possible to update any installed package for all or several projects up to a required version, as well as remove it in one click.

To learn more, see Credential providers for private NuGet feeds in Rider 2018.1 EAP.

Custom MSBuild in toolset and build settings

Better understanding of projects and solutions

In this release, Rider has learned to:

  • Let you develop and build full .NET framework applications without an existing Visual Studio or Visual Studio Build Tools installation on a Windows machine using JetBrains redistributable of MSBuild. You can specify the Custom MSBuild under Build, Execution, Deployment | Toolset and Build | Use MSBuild version.
  • Support Web References: view web references in the Solution Explorer, discover and add WCF web references by URL, and remove existing web references.
  • Open and run Web Site projects with full support, including navigation, refactoring, code analysis, and so on.
  • Provide UI for editing project properties in .NET Core solutions.
  • Discover and auto-detect MSBuild more accurately.

To learn more, see:

Solution Explorer for F# project in dependency order

Evolving F# support

In F# projects, files are now arranged in dependency order, and you can drag-and-drop to reorder files in Solution Explorer. File re-ordering works for multiple files, so you can also move files before or after an existing directory.

F# scripting has been improved, too:

  • Code Completion, highlighting, and analysis work as expected.
  • Navigation commands such as Search Everywhere, Go to Symbol, Go to File Member, Find Usages, and Viewing File Structure all support scripts.
  • Smart Code Completion for files in #r and #load directives provides all the applicable files from subdirectories and inserts the relative path.

To learn more, see:

Support for C# 7.2

More changes from ReSharper

Rider doesn't forget about its roots and continues in the footsteps of its big brother, ReSharper. The list of features adopted from ReSharper 2018.1 includes:

  • Full understanding of C# 7.2 and improved support for previous C# versions.
  • Using EditorConfig to set inspection severities for any scope: solution, project, or a specific file. Use the option Read settings from editorconfig and project settings available under Settings | Inspection Settings | Enable Code analysis.
  • Code formatting inspections: Rider can now highlight code formatting violations right in the editor as you code. Not everyone is a fan of this behavior, which is why these inspections are disabled by default; to turn some or all of them on, go to Editor | Inspection Settings | Inspection Severity.
  • StyleCop support configurable under Editor | Code Style | StyleCop. Note that StyleCop configuration may override Rider's own code style settings.

To learn more, see:

Docker compose services

Even more changes from IntelliJ platform

Features inherited from IntelliJ IDEA 2018.1 include:

  • Docker support is now aware of multiple Docker Compose files, including docker-compose.override.yml, and allows choosing the services right away after choosing the configuration files in the run configuration.
  • Preview of regex replacement in the Replace in Path dialog.
  • New compact and lightweight documentation popup.
  • Better HiDPI support on multiple displays for Windows.
More frontend development features

More frontend development features

Rider continues to expand the functionality that it inherits from WebStorm and provides out of the box.

This update supports the latest TypeScript 2.7 features, improves the Implement Members action, and adds a new Surround with type guard quick-fix for unresolved properties.

Courtesy of our great colleagues on the WebStorm team, configuring package managers in Rider is now much easier. In Node.js and npm preferences, you can select between npm and Yarn and then have Rider use the preference when installing dependencies and running scripts. If you open a new project with a yarn.lock file, Rider will use Yarn in it if it's installed.

The Rename refactoring for classes now offers renaming a file if it has the same name as the class.

Ctrl/Cmd-click on a class name in HTML will navigate to its declaration in Sass, SCSS, or Less source code. In addition, code completion will suggest classes and IDs from all style sheets if there are no matching symbols in the linked CSS file.

Support for partial Git commits

Version control improvements

Everyone knows that small commits make it easier to review and track changes, and roll them back if something went wrong. Partial Git commits (git add -p) let you easily commit only selected changes from a file. Use checkboxes in the diff view of the Commit Changes dialog to select chunks of code you want to commit. Also, change markers in the left gutter let you move a change to any existing changelist or create a new one.

There's now a new Group by icon available in the Local Changes tab in the Version Control tool window, which allows you to group local changes by their directory, module, or repository.

In addition, Rider now highlights hashes in the commit details, and allows you to one-click jump to this commit in the Log tab.

Finally, Abort Rebase, Continue Rebase, and Skip Commit actions are now available from the Git Branches pop-up.

Ideolog plugin

Other changes

Smaller changes in Rider 2018.1 include:

  • New MSTest settings dialog: File | Settings | Build, Execution, Deployment | Unit Testing | MSTest.
  • New customization settings for C# Interactive: set focus to tool window on open/Send Line, or move the caret down on Send Line (adjustable in Settings | Language & Frameworks | C# Interactive).
  • The Ideolog plugin is available for download from the IDE: go to Settings | Plugins | Install JetBrains plugins…
  • The Scratches view is working as expected with a fully-fledged context menu.
Download
Free 30-day trial

Rider 2017.3

Debugging third-party code

Debugging third-party code

Sometimes, you want to debug an assembly that you don't own source code for: a control library or a legacy module that doesn't quite work as expected. Other times, you just want to know better how the .NET Framework operates.

Rider 2017.3 makes debugging external code an automatic, pain-free process. You can now step through and set breakpoints in assemblies that Rider decompiles on-the-fly. Rider already had both a .NET debugger and a .NET decompiler inside, we just had to make them interoperate seamlessly, which we did.

Whenever you're only interested in debugging your own code, you can change debugger settings to make it step over any library calls.

To learn more, see Debugging third-party code with Rider.

Smart Step Into

Smart Step Into

Debugging method chains and nested method calls gets way easier with a new debugger action, Smart Step Into.

The action helps you choose a particular call to step into, while stepping over all other calls in a line. For example, when debugging a line like Print(Filter(people, BuildPredicate(x => x.Feature, "smth")));, you can pick to specifically step into Filter().

To learn more, see Smart Step Into debugging in Rider.

Debugger shows return values in Variables view

Return values in locals

Following popular demand, Rider learns to display function return values in the Variables view (a.k.a "locals") of the Debug tool window as you step through your code.

This is useful when the result of a method call is not stored in a local variable, for example when the method returns another method's return value, or when using method chaining.

To learn more, see Async call stack and more debugger improvements in Rider 2017.3.

More debugger improvements

Debugging in Rider has improved in many other ways, such as the following:

  • You can now drag-and-drop the execution pointer to an earlier or later location in code, letting you retry or skip certain logic without having to restart the application.
  • Callers of async functions are now displayed in the Frames view, restoring the async causality chain.
  • Debugger actions like Force Run To Cursor and Set Next Statement are now available via AltEnter during debugging sessions.
  • Code completion items in Variables and Watches views get a refreshed presentation.
  • Lambda expressions and extension methods are now supported when you debug Mono-based applications such as Xamarin or Unity.
  • Values of numeric types — decimal, float, double — are now evaluated and presented as expected.

To learn more, see Async call stack and more debugger improvements in Rider 2017.3.

New project wizard

New project wizard

Rider's UI for creating projects and solutions has been improved in many ways.

  • Project templates are now grouped by framework, with languages, flavors and target framework versions selectable in properties of each framework template.
  • Git or Mercurial repositories can be created along with new solutions.
  • You can search the wizard for a particular type of application or programming language.
  • More project templates are available by default, such as WPF Application and Unity Class Library.
  • Additional project templates based on dotnet new can be easily installed.

To learn more, see Project templates in Rider 2017.3.

Unit testing improvements

Unit testing improvements

Rider's .NET unit test runner gets a serious usability boost, as well as a set of new functionality:

  • Two new actions are available: Repeat Tests Until Failure and Rerun Failed Tests In Current Session.
  • All actions now respect the currently selected filter (such as Failed tests only). Filters themselves are now presented in a more compact manner: if a test status doesn't occur in the current test session, the filter for that status is not displayed.
  • Local shortcuts for unit test trees are introduced: for example, Del removes selected tests from a session, and AltShiftInsert creates a new session.
  • When you search for tests in the unit test tree, you can now find results in collapsed nodes.

To learn more, see Unit testing improvements in Rider 2017.3.

C# Interactive

C# Interactive

We have added a new C# Interactive tool window that helps you run C# statements without having to wait for compilation. This is a quick REPL-based way to draft code and get immediate feedback on what a given expression will return.

To start a new interactive session, open the tool window directly, or send a code selection from the code editor via AltEnter.

To learn more, see C# Interactive in Rider.

Unity support improvements

Unity support improvements

In addition to the new Unity Class Library project template mentioned above, the Unity plugin receives an array of all-around improvements:

  • New context actions to annotate fields as serializable or not serializable, as well as to convert auto-properties to properties with serialized backing fields.
  • New code inspections around Unity attributes, such as signature checks in methods marked with [PostProcessScene] and other Unity attributes.
  • Code completion starts to show Unity event functions at the top of the list, and works again before attributed fields.
  • Syntax highlighting and coding assistance are available in compute shaders in addition to regular shaders.
  • Unity debugger learns to break on user-unhandled exceptions, evaluate locals in coroutines and tasks, and reliably hit breakpoints when attached to local Unity processes. pdb2mdb is now integrated to enable the Mono debugger to handle assemblies that come with Windows-specific PDB files.
  • Quick Documentation pop-up provides links to external documentation for Unity symbols.
Config transformations

Web.config and App.config transforms

Rider learns to execute Web.config and App.config transformations that are commonly used to modify settings when packaging applications.

From the context menu, you can add a transformation, select a configuration that it is applied to (Debug or Release), and choose whether you want the resulting transform file to be nested under its parent in Solution Explorer.

To learn more, see XDT configuration transformations in Rider.

Reworked formatter

Reworked formatter

Similar to ReSharper, Rider's code formatting engine receives a major update. As a result, Rider learns to align code in columns and apply other new code styles. It also gets a way to disable or enable formatting for selected blocks of code with comments, or for entire files with EditorConfig.

To learn more, see:

More changes from ReSharper

Other updates that Rider received from ReSharper 2017.3 include:

  • Reworked Extract Method refactoring that supports returning tuples instead of out parameters when you're using C# 7.
  • New C# typing assists to add multiline comments, indent methods in chains, and surround code selections.
  • Support for tuples and documentation inheritance via <inheritdoc/> in VB.NET.
Running Karma tests

More frontend development features

Rider continues to expand the set of WebStorm functionality that it provides out of the box.

This release bundles a set of plugins for frontend developers that were formerly only available on demand, and weren't easily discoverable. This set of plugins includes support for TSLint, CoffeeScript, LiveEdit, Polymer and web components, Pug (ex. Jade), Handlebars, Karma, Stylus, AngularJS, spy-js, Gherkin, and Cucumber. (In related news, Vagrant plugin is now also available by default.)

Thanks to recent updates made by the WebStorm team, support for JavaScript, TypeScript, CSS and Vue.js gets a boost as well, and a preview panel is now available whenever you edit SVG files.

Finally, we have improved detection of package.json files in projects, which lets Rider suggest installing or updating npm packages in more cases.

Properties for .NET Core projects

MSBuild and NuGet

Rider's NuGet tooling learns to handle fallback folders, restore packages based on PackageReference directives in .csproj files, and ignore disabled NuGet package sources.

Speaking of its project system, Rider now provides UI to edit .NET Core project properties, and applies additional heuristics when dealing with linked files: it lets you choose between copying, moving files and adding links to them when you add an existing item, and suggests to exclude linked files from a project instead of deleting them from file system.

In a related change, we have enabled IntelliSense in .NET Core project files.

Reworked Docker run configurations

IntelliJ platform changes

Rider continues to take full advantage of its IntelliJ platform roots. In this release cycle, changes inherited from IntelliJ IDEA include:

  • Editor-based REST client based on scratch files with the .http extension. (The UI-based version of the REST client continues to be available, and even gets a few cosmetic updates.)
  • Version control updates including interactive rebase from Git log, preserving workspaces when switching between branches, and improved handling of Git and Mercurial merge commits.
  • Database updates: grouping data sources, XQuery/XPath coding assistance in .sql files via language injections, and more.
  • Docker support updates, most importantly revised Docker run configurations.
Null checking preferences

Settings

Rider's settings have been reworked in several ways:

  • You can now reliably export and import Rider settings via Import Settings, Export Settings and Manage Layers dialogs.
  • C# code style settings were extended with a Null Checking tab that helps choose a default null checking style in code that Rider generates for you.
  • Inspection severity configuration is now separated into per-language pages.
  • A new page with JetBrains Annotations settings was added under Inspection Settings.

Even more changes

  • Find Usages learns to work asynchronously to show available results while a search is still running, and offers a new grouping by usage type.
  • We have introduced a new Xcode keymap for long-time Mac users.
  • Designer files are now automatically regenerated on saving the associated .resx files.
  • Context menu on Solution Explorer nodes has been restructured for a clearer, more compact presentation of actions.
  • JetBrains annotations were ported to .NET Core, which makes entire categories of code inspections (nullability, LINQ, purity inspections) work more reliably.

Performance improvements

We have improved performance in many aspects, including:

  • Loading and reloading projects: thanks to a new asynchronous handling of MSBuild tasks, the synchronization stage of loading projects is now up to 5 times faster on large solutions that we used for testing.
  • Code completion performs faster on huge solutions.
  • In terms of debugging, the debugger launch time in some scenarios has been optimized, as well as rendering of large call stacks.
Download
Free 30-day trial

Rider 2017.2

.NET Core 2.0

.NET Core 2.0

Rider 2017.2 adds support for .NET Core 2.0 in addition to .NET Core 1.1.

All Rider's code inspections, navigation actions, quick-fixes and refactorings are now available for .NET Core 2.0. Rider can run and debug your .NET Core 2.0 projects, manage NuGet packages that are used in them, as well as run unit tests based on xUnit, NUnit or MSTest.

Inspect This menu for call and value tracking in Rider

Call and value tracking

We've implemented some of the most insightful features that ReSharper has to offer: Call Tracking and Value Tracking.

Where does this value come from? Where is this value used? What are the call trees that this method is involved in? Using the new Inspect This action (CtrlAltShiftA) in Rider, you can now figure this out. On member and parameter declarations, Call Tracking and Value Tracking actions are even directly available from the AltEnter menu.

Both features are currently available in C# and VB.NET.

Running MSTest-based unit tests from the editor

MSTest support

Rider's unit test runner already supported running and debugging xUnit and NUnit tests. With Rider 2017.2, based on popular demand, we are adding MSTest to the list of supported frameworks. This includes classic MSTest (a.k.a Visual Studio Testing Framework) as well as the emerging cross-platform MSTest V2.

MSTest V2 will work out of the box on Windows, Mac or Linux. As to classic MSTest, due to the way it's licensed, you need to have a Visual Studio instance installed on your machine in order to run classic MSTest-based tests in Rider. The path to Visual Studio needs to be configured in Rider settings under Build, Execution, Deployment | Unit Testing | MSTest.

Open folder or file with Rider

Open folder or file

Not all code is in a solution or project. With that in mind, we added a command to open an individual file or folder from the Rider start screen and the File | Open menu.

When you open a file or folder, you can use a lot of Rider features, including HTML/JavaScript/TypeScript support, version control, Go to File, Search Everywhere, as well as Find in Path.

Attach existing folder to solution

Attach folder to solution

Along with opening folders or files, Rider can now do something extra: attach any folder to a solution. This doesn't modify any project or solution files; instead, it simply makes the folder visible in Solution Explorer alongside your current solution.

This can be useful if you're working with a web application that has distinct frontend and backend parts, and they're maintained in separate repositories. In this case, attaching the frontend part to your .NET backend solution will let you edit both parts in Rider, without integrating the frontend into your solution structure.

Parallel stacks, lambda evaluation and more debugger updates

The Debug tool window gets a new tab: Parallel Stacks. When debugging multithreaded applications, it lets us visualize the various threads that are active while debugging, as well as their call stack. Hovering over a thread displays all child threads. From the toolbar, you can jump to the active frame. Double-clicking an entry in the call stack will jump to source. And when stepping through code, the diagram will be updated depending on threads that are being started/joined.

Rider's debugger now lets you add lambda expressions as watches. The debugger will evaluate and execute the expression, visualizing the results.

When debugging applications that have lots of variables, you may want to mark variables with custom colors. This can now be done using the context menu or with a shortcut. Marking a variable makes it really easy to discover where it's used, for example in fields of other objects.

Finally, we enabled adding watches for nested items, such as properties of a property of an object, or an element in a collection.

Transform Parameters refactoring

New refactorings

We keep adding more items from the broad set of refactorings originally available in ReSharper.

One of them is Transform Parameters. It lets you create a new class or struct and converts parameters of the selected method into encapsulated fields of the newly created type. After applying the refactoring, usages of parameters are converted into usages of properties of the type being created. This refactoring also allows getting rid of out parameters by introducing a tuple object return type.

Another new refactoring is Invert Boolean. It helps automatically invert a boolean member and transform true to false and rewrite all usages to invert the boolean logic.

Enabling C# 7.1 support in Rider

Code analysis updates from ReSharper 2017.2

Rider 2017.2 comes with ReSharper 2017.2 as its engine for providing .NET support. This means a number of features announced with ReSharper 2017.2 are now available in Rider.

Examples include improved support for C# 7.0 (including pattern matching and out variables), and initial support for C# 7.1. Rider now supports the default literal, tuple projection initializers, async main and pattern matching with generics. Simply reference the latest compiler package and make sure to set the language level in your project file. By the way, Rider can also detect if language features from a higher language level are used, and provide a quick-fix to make a switch.

Rider also adds some new code inspections around IEnumerable, and will check XML documentation inheritance to make sure it is valid. This ensures documentation in the IDE as well as generated API documentation is correct.

Code folding and documentation tooltips in F#

Evolving F# support

Rider 2017.2 comes with a series of new features and improvements around F#.

For example, it's now possible to work with .NET Core F# projects, for both SDK 1.0 and 2.0. For F# projects that use Paket instead of NuGet, Rider now disables its automatic NuGet restore on loading such projects. This ensures that projects like Fable load properly in Rider.

We've addressed a set of issues that you faced working with mixed C# and F# code bases, ensuring that F# code is exposed correctly in C# projects.

Rider now enables code folding in the editor. Pretty much any multi-line expression/statement can now be folded or unfolded.

We've also implemented the Comment with Block Comment action, which comments out the current selection with (* and *).

Looking up the documentation never hurts when writing code, and Rider now displays XML doc comments in a tooltip when hovering over documented code.

When you debug, Rider now supports evaluating expressions on hover, allowing us to inspect a variable from within the editor.

Bettere code highlighting in Unity shaders

Unity development

For game developers, we added support for debugging different Unity processes. You can now create a Mono Remote configuration to remotely debug standalone games, such as those running on an Android device. The IDE and debugger now also support working with modularized UnityEngine dll's.

In other notable Unity support news, we've significantly improved our ShaderLab parser, which results in better code highlighting in .cginc files and injected Cg fragments in .shader files. As an additional nice touch, Rider now highlights color values in ShaderLab files, and if you press AltEnter, you can modify the color using a color palette picker.

Generating Unity code is now easier, with file templates for new MonoBehaviour scripts, shaders and tests. Additionally, code completion and generation of event functions are now available in recent versions of Unity.

For mode details on Unity updates, see Rider blog.

JavaScript code arrangement settings in Rider

Better JavaScript and TypeScript support

Courtesy of a newer version of bundled WebStorm, Rider 2017.2 now offers richer support for JavaScript and TypeScript:

  • When you hover over an object while holding Ctrl, the inferred type for the object is displayed in a tooltip.
  • Reworked JavaScript code style settings allow configuring how to order members of a class, such as constructors, fields and methods. To apply these settings, use the Code | Rearrange Code command.
  • When using CSS modules and importing them into a JavaScript file, Rider provides code completion and navigation support for class names in that module.
  • Rider now detects tsconfig.json and takes it into account when analyzing TypeScript files.
  • Code completion and navigation for Angular Material attributes is now available.
  • When using webpack, Rider better understands complex configurations and properly resolves paths in import statements and import suggestions.
Reword a local Git commit

Version control improvements

When you work with Git, Rider now lets you revert and reword local commits. To do this, use the context menu under the Log tab in the Version Control tool window.

From the settings under Version Control | Commit Dialog, you can now customize commit message rules and inspections. Do you put a blank line between the subject and the body? Should the maximum length of a commit message be defined? You can set these and similar rules. In addition, Rider provides quick-fixes for these rules, and reformatting code can also be done inside the commit message.

Make code changes directly from search results

Make changes from search results

In Rider 2017.2, we improved the way you work with results of a textual search using Find in Path (CtrlShiftF).

Search results from the same lines are now merged together. Also, the Preview pane now has a left-hand gutter that displays line numbers, navigation icons, context actions and local change markers. This makes it easy to make small changes directly from a search!

Unit test framework settings

More unit testing improvements

There's more than MSTest support in terms of unit testing in this release. Here's a few more highlights:

  • NUnit tests are now supported for full .NET Framework, .NET Core 2.0, and .NET Core 1.1.
  • All unit test providers now have their own settings pages where framework-specific settings can be tweaked. In addition, it's possible to disable frameworks that are not in use.
  • We've also made performance improvements for solutions that contain large test sets, as well as tests that produce a lot of output (including word wrap).
NuGet tool window in vertical layout

NuGet updates

A number of updates went into Rider's NuGet client. We're now using NuGet 4.3 under the hood, which brings full support for SemVer2 and .NET Core 2.0. Rider adds support for wildcard versions in package references, too.

When referencing packages that are not targeting .NET Core 2.0 (but are known to work with it), the AssetTargetFallback property can be used to define "fallback" target frameworks for project's dependencies. By default, .NET Core 2.0 projects will have this property set to net461, meaning that any NuGet package that is compatible with .NET Framework 4.6.1 or higher can be used without additional configuration. Rider now also includes initial support for this.

You can now install CLI tools packages right from within the NuGet client, without manually editing the .csproj file. For example, this is useful with Entity Framework Core's database migration commands from Microsoft.EntityFrameworkCore.Tools.DotNet.

We made some UI changes as well: for example, you can now toggle position of the package details pane, which is useful if you prefer to keep the NuGet tool window vertically oriented. And when possible, package icons will be rendered in high DPI making everything look more crisp.

Descriptions of base members in the Generate dialog

Even more changes

Here's a short list of other notable changes in this Rider release:

  • More and better code completion suggestions in CSS, JavaScript, TypeScript, .config, .csproj and XML files.
  • Improved Multi-line completion: for instance, import completion in C# is now available when you invoke code completion with multiple text carets set.
  • When generating code, such as overriding or missing members, Rider now shows descriptions of base members that are being overridden or implemented.
  • Import and export of all global settings is available, including both settings coming from ReSharper and the IntelliJ platform.
  • Solution-wide analysis (SWEA) is automatically paused during NuGet restore when running it doesn't make a lot of sense.
Download
Free 30-day trial