> ## Documentation Index
> Fetch the complete documentation index at: https://ona.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Rider

<Info>
  Rider is currently in Beta. Gitpod
  [continues to collaborate with
  JetBrains](https://www.gitpod.io/blog/gitpod-jetbrains) · [Send
  feedback](https://github.com/gitpod-io/gitpod/issues/6576).
</Info>

## Getting started

1. **Install [JetBrains Gateway](https://www.jetbrains.com/help/rider/Remote_development-a.html#gateway#gateway)** - With the [JetBrains Gateway and Gitpod](/classic/user/integrations/jetbrains-gateway) plugin you can create and manage your latest 20 Gitpod workspaces.
2. **Install the Gitpod plugin** - Open JetBrains Gateway and you'll see the Gitpod logo on the main page. Click "install" to install the [Gitpod plugin](https://plugins.jetbrains.com/plugin/18438-gitpod-gateway) for JetBrains Gateway.
3. **Update your Gitpod preferences** - Select Rider on the [Gitpod preferences page](https://gitpod.io/preferences) which will set Rider as your default IDE for future workspace starts.
4. **Start (or restart) your workspace** - Either start a workspace directly from within the [JetBrains Gateway](/classic/user/integrations/jetbrains-gateway) via the Gitpod plugin **OR** open a new workspace directly in Gitpod where on workspace start you will be prompted to open Rider for that workspace.

<Frame caption="Updating Gitpod IDE preferences to Rider">
  <video controls playsInline autoPlay loop muted className="shadow-medium w-full rounded-xl max-w-3xl mt-x-small" src="https://mintcdn.com/gitpod-13c83c2b/TkdH1nTP1u2uhW_w/images/editors/select-jetbrains-ide.webm?fit=max&auto=format&n=TkdH1nTP1u2uhW_w&q=85&s=354e9174f8f04ab94122fabd8e28bbe5" data-path="images/editors/select-jetbrains-ide.webm" />
</Frame>

<Frame caption="Opening a JetBrains IDE from Gitpod">
  <video controls playsInline autoPlay loop muted className="shadow-medium w-full rounded-xl max-w-3xl mt-x-small" src="https://mintcdn.com/gitpod-13c83c2b/TkdH1nTP1u2uhW_w/images/editors/opening-the-thin-jetbrains-client.webm?fit=max&auto=format&n=TkdH1nTP1u2uhW_w&q=85&s=74c85889bb90eb28832458c462fd2c1a" data-path="images/editors/opening-the-thin-jetbrains-client.webm" />
</Frame>

<Frame caption="Updating the Gitpod plugin in JetBrains Gateway">
  <video controls playsInline autoPlay loop muted className="shadow-medium w-full rounded-xl max-w-3xl mt-x-small" src="https://mintcdn.com/gitpod-13c83c2b/TkdH1nTP1u2uhW_w/images/editors/update-jetbrains-gateway-settings.webm?fit=max&auto=format&n=TkdH1nTP1u2uhW_w&q=85&s=55130ca1dded81f5e769b9cef9ea3468" data-path="images/editors/update-jetbrains-gateway-settings.webm" />
</Frame>

<Frame caption="Opening a JetBrains IDE from Gateway">
  <video controls playsInline autoPlay loop muted className="shadow-medium w-full rounded-xl max-w-3xl mt-x-small" src="https://mintcdn.com/gitpod-13c83c2b/TkdH1nTP1u2uhW_w/images/editors/open-from-jetbrains-gateway.webm?fit=max&auto=format&n=TkdH1nTP1u2uhW_w&q=85&s=9624b1a276f7318a7f1fc43888fd46e5" data-path="images/editors/open-from-jetbrains-gateway.webm" />
</Frame>

<Note>
  **Important:** You must restart any started workspaces for your IDE
  preferences to take effect.
</Note>

## Prerequisites

To successfully use Rider and load a .NET project, your workspace needs the .NET Framework or a compatible alternative, to be installed. The [default workspace image](/classic/user/configure/workspaces/workspace-image#use-a-public-docker-image) does not come with .NET pre-installed, so you have two options:

**Using the .NET workspace image (Recommended)**

1. Create a `.gitpod.yml` file
2. Set the `image` property to `image: gitpod/workspace-dotnet:latest` or alternatively, [use a custom Dockerfile](/classic/user/configure/workspaces/workspace-image#use-a-custom-dockerfile)

If you need a specific version of .NET, check out our [Dockerfile](https://github.com/gitpod-io/workspace-images/blob/main/chunks/tool-dotnet/Dockerfile) so you can create your own, specifying the version you need.

For additional examples, check out [.NET in Gitpod](/classic/user/introduction/languages/dotnet).

**Manually install .NET**

1. Using a workspace terminal, install `dotnet` or a compatible alternative
2. Restart the IDE

Note: manually installed dependencies are only available in the current workspace, when you start a new workspace dotnet will not be pre-installed, for this reason we recommend the first option.

## Install Plugins

<Info>
  This section relates to plugin management when using JetBrains IDEs in a
  remote development context. For information on regular plugin management,
  refer to{' '}

  <a href="https://www.jetbrains.com/help/rider/Managing_Plugins.html" target="_blank">
    Rider docs
  </a>

  .
</Info>

Unlike with regular development, JetBrains [Remote development](https://www.jetbrains.com/help/rider/Remote_development_overview.html#defs) with Rider allows users to install plugins in different locations:

* [**Rider backend plugins**](#install-on-title-backend) - The JetBrains Rider backend runs within the remote Gitpod workspace. Backend plugins contribute functionality for IDE experiences relating to the filesystem, tools or languages and frameworks. When installed, **a backend plugin only applies to the currently running Gitpod workspace** and is not associated with a user. However, a plugin can be [preconfigured for all users of a repository](#preconfigure-for-repository) so that the plugin is enabled with every workspace start. It is not currently possible to install a backend plugin that applies to all workspaces of a Gitpod user or organization.
* [**JetBrains Client plugins**](#install-on-jetbrains-client) - The JetBrains client runs on the users local machine and can be thought of as the user interface to the remote Rider backend. Client plugins are different to backend plugins as they contribute to the user interface aspect of the IDE experience (e.g. keyboard shortcuts and themes). Once installed, **a client plugin is enabled for all Gitpod workspaces the user opens** (if the workspace is running the exact same version of the Rider backend where the plugin was initially installed).
* [**JetBrains Gateway plugins**](/classic/user/integrations/jetbrains-gateway#getting-started) - The JetBrains Gateway is an application downloaded onto a users local machine which allows users to start JetBrains Clients that are compatible with the Rider backend, running in a Gitpod workspace. JetBrains Gateway plugins are installed directly in JetBrains Gateway and contribute to remote development connection experiences (e.g. the [Gitpod JetBrains Gateway](https://plugins.jetbrains.com/plugin/18438-gitpod-gateway) plugin).

### Install on JetBrains Client

The JetBrains client runs on the users local machine and can be thought of as the user interface to the remote Rider backend. Client plugins contribute to the user interface aspect of the IDE experience (e.g. keyboard shortcuts and themes).

Once installed, **a client plugin is enabled for all Gitpod workspaces the user opens** (if the workspace is running the exact same version of the Rider backend where the plugin was initially installed).

To install a plugin on **JetBrains Client** follow these steps:

* In **JetBrains Client** open the IDE settings and select **Plugins**.
* Find the plugin in the **Marketplace** and click **Install**.

<Frame caption="Install a plugin on JetBrains Client">
  <img className="shadow-medium w-full rounded-xl max-w-3xl mt-x-small" alt="Install a plugin on JetBrains Client" src="https://mintcdn.com/gitpod-13c83c2b/TkdH1nTP1u2uhW_w/images/editors/install-local-jb-plugin.png?fit=max&auto=format&n=TkdH1nTP1u2uhW_w&q=85&s=4c59f2ab6bbdd15903c79239d7425f49" width="2024" height="1624" data-path="images/editors/install-local-jb-plugin.png" />
</Frame>

### Install on Rider backend

The JetBrains Rider backend runs within the remote Gitpod workspace. Backend plugins contribute functionality requiring access to IDE experiences such as the remote filesystem (e.g. contributing support of languages and frameworks).

When installed, **a backend plugin only applies to the currently running Gitpod workspace** and is not associated with a user. However, a plugin can be [preconfigured for all users of a repository](#preconfigure-for-repository) so that the plugin is enabled with every workspace start.

It is not currently possible to install a backend plugin that applies to all workspaces of a Gitpod user or organization.

#### Install for your current workspace

You can install a plugin only for **your current workspace** following these steps:

* In **JetBrains Client** open the IDE settings and select **Plugins On Host**.
* Find the plugin in the **Marketplace** and click **Install**.

<Frame caption="Install a plugin on Rider backend">
  <img className="shadow-medium w-full rounded-xl max-w-3xl mt-x-small" alt="Install a plugin on Rider backend" src="https://mintcdn.com/gitpod-13c83c2b/TkdH1nTP1u2uhW_w/images/editors/install-remote-jb-plugin.png?fit=max&auto=format&n=TkdH1nTP1u2uhW_w&q=85&s=239a243844c5d845966711c576c2adb5" width="2024" height="1624" data-path="images/editors/install-remote-jb-plugin.png" />
</Frame>

### Configure plugins for repository

You can share a plugin on **Rider backend** with everybody working on the repository by adding it to [.gitpod.yml](/classic/user/references/gitpod-yml) and pushing to your Git repository.
Each workspace is preconfigured with plugins from the `gitpod.yml` configuration file. For example:

```yml .gitpod.yml theme={null}
jetbrains:
    rider:
        plugins:
            - zielu.gittoolbox
            - izhangzhihao.rainbow.brackets
```

To locate the **Plugin ID**, visit the [JetBrains Marketplace](https://plugins.jetbrains.com) website and navigate to the `Overview` page of the specific plugin you're interested in. The Plugin ID is usually found at the bottom of this page.

### Configure custom plugin repositories

If you are using custom repositories, you can directly specify the URL of your custom repository or the identifier of your custom plugin. For example:

```yml .gitpod.yml theme={null}
jetbrains:
    rider:
        plugins:
            - http://my-custom-repository
            - my-custom-plugin
```

For detailed guidelines on setting up and using custom plugin repositories, please refer to [JetBrains' documentation on custom plugin repositories](https://plugins.jetbrains.com/intellij/custom-plugin-repository.html).

### Install plugins from a workspace image

Within your Dockerfile for the workspace image, copy the plugin archive (.zip file) to one of the following directories:

* `/home/gitpod/.gitpod/jetbrains/plugins` - This location installs plugins to all JetBrains products (IntelliJ IDEA, GoLang, etc).
* `/home/gitpod/.gitpod/jetbrains/rider/plugins` - This location will install plugins only to the given IDE, e.g. Rider.

<Note>
  Before starting the Rider backend, Gitpod will read the locations specified
  above and install plugins.
</Note>

### Install plugins per a user

To install plugins solely your user only profile, use the same approach as described in [install from a workspace image](#install-plugins-from-a-workspace-image). However, store your IDE Plugins in [.dotfiles](/classic/user/configure/user-settings/dotfiles#dotfiles) instead of the workspace image.

## Configure JVM options

<Info>
  Gitpod automatically sets the Java maximum memory heap size (`-Xmx`) based
  on workspace resources. You can override this default using any options
  provided below.
</Info>

You can adjust JVM options for Rider backend, especially if you want to increase the `-Xmx` memory size use `.gitpod.yaml` or set the env `RIDER_VMOPTIONS` via [environment variables](/classic/user/configure/workspaces/environment-variables). For example:

```yml .gitpod.yml theme={null}
jetbrains:
    rider:
        vmoptions: '-Xmx4g'
```

```bash theme={null}
RIDER_VMOPTIONS=-Xmx4g
```

For more detailed information on JVM options, refer to [Common JVM Options](https://www.jetbrains.com/help/rider/Tuning_the_IDE.html#common-jvm-options) from JetBrains documentation.

## Configure IDE settings

<Info>
  **Feedback needed:** The below shows how you can configure global settings
  with JetBrains. To leave feedback on the approach, please see this GitHub
  issue: [#6576](https://github.com/gitpod-io/gitpod/issues/6576). Also note
  that JetBrains is working on [comprehensive settings sync
  functionality](https://youtrack.jetbrains.com/issue/RDCT-1/Settings-synchronization).
</Info>

When running Rider locally, the JetBrains IDE applies [global settings](https://www.jetbrains.com/help/rider/Rider_Settings.html) to all projects on your machine. However when running in a remote context using [JetBrains Gateway](/classic/user/integrations/jetbrains-gateway), it's important to note that some IDE settings are configured on the [JetBrains Client](#on-jetbrains-client) and others in the [Rider backend](#on-title-backend) running in your Gitpod [Workspace](/classic/user/configure/workspaces). See below instructions for more.

### On JetBrains Client

IDE Settings that are configured on the JetBrains Client are stored on your local machine and don't have `On Host` label in the IDE settings. These IDE settings are reused if the workspace is running the exact same version of the Rider backend where the settings were initially configured.

<Frame caption="JetBrains client settings don't have <code>On Host</code> label.">
  <img className="shadow-medium w-full rounded-xl max-w-3xl mt-x-small" alt="Configure IDE settings on JetBrains client" src="https://mintcdn.com/gitpod-13c83c2b/TkdH1nTP1u2uhW_w/images/editors/jb-client-configure-settings-client.webp?fit=max&auto=format&n=TkdH1nTP1u2uhW_w&q=85&s=e35fb076d54b0917203ebf67e86e5fce" width="2024" height="1644" data-path="images/editors/jb-client-configure-settings-client.webp" />
</Frame>

### On Rider backend

Settings configured on Rider backend are stored in a Gitpod workspace and have `On Host` label in the IDE settings.

<Frame caption="Rider backend settings have <code>On Host</code> label.">
  <img className="shadow-medium w-full rounded-xl max-w-3xl mt-x-small" alt="Configure IDE settings on JetBrains client" src="https://mintcdn.com/gitpod-13c83c2b/TkdH1nTP1u2uhW_w/images/editors/jb-backend-configure-settings.webp?fit=max&auto=format&n=TkdH1nTP1u2uhW_w&q=85&s=05a45f3c8642be7db931a70722e71728" width="2188" height="1648" data-path="images/editors/jb-backend-configure-settings.webp" />
</Frame>

### Configure IDE settings per project

Some IDE settings cannot be configured via [environment variables](/classic/user/configure/workspaces/environment-variables) or through setting [vm options](#configure-jvm-options). These settings can only be set via the UI of JetBrains client, and must be manually copied to be synced between workspaces. The below steps detail how to configure your IDE settings for all the users of a given Gitpod project:

**Step 1: Manually use JetBrains UI to configure settings** - Set your IDE settings as you normally would, using the JetBrains UI.

**Step 2: Find generated IDE settings** - You will need to manually find any global settings generated by JetBrains backend within the following path: `/workspace/.config/JetBrains<-latest>/RemoteDev-/<your-project-name>/options`

**Step 3:** Move any relevant settings manually to a persistent location within your Gitpod project. Either via a [Workspace Image](/classic/user/configure/workspaces/workspace-image), or persisted in the version control of your project, for example by committing settings data to GitHub.

**Include relevant IDE settings in your Workspace Image**

* `/home/gitpod/.gitpod/jetbrains/options` - This location applies settings to all JetBrains products (IntelliJ IDEA, GoLang, etc).
* `/home/gitpod/.gitpod/jetbrains/rider/options` - This location will apply settings only to the given IDE, e.g. Rider.

**Commit relevant IDE settings to source control**

* `/workspace/<your-project-name>/.gitpod/jetbrains/options` - This location applies settings to all JetBrains products (IntelliJ IDEA, GoLang, etc).
* `/workspace/<your-project-name>/.gitpod/jetbrains/rider/options` - This location will apply settings only to the given IDE, e.g. Rider.

For any further changes to your IDE settings, you will need to follow the above steps again.

<Info>
  When locating and applying IDE settings, Gitpod will read the locations
  specified above in priority order. The locations specified first are
  overriden by the locations specified later.
</Info>

### Configure IDE settings per user

To configure IDE settings for your user only, and not all those using a project.

Follow the instructions for [configuring IDE settings per project](#configure-ide-settings-per-project), but instead use [.dotfiles](/classic/user/configure/user-settings/dotfiles#dotfiles) rather than a workspace image or source control to store your IDE settings.

## Indexing using Prebuilds

Currently, prebuilds for Rider are not supported. To leave feedback or check for updates, see [gitpod/issues/6740](https://github.com/gitpod-io/gitpod/issues/6740).

## Workspace performance

When using a Gitpod workspace you might experience performance issues caused by:

* An application using more resources than expected
* Resource consumption in adjacent containers running on the workspace node.

In your JetBrains IDE within the JetBrains Gateway [Backend Control Center](https://www.jetbrains.com/help/idea/work-inside-remote-project.html#control_center) you can find two metrics relating to your running workspace: `Workspace CPU` and `Workspace Memory`.

The remaining metrics you can find in the Backend Control Center regarding the node that your workspace is running on, and not the workspace itself.

<Info>
  Performance information shown in the Backend Control Center is the same as
  the information that is shown when running the command [`gp
    	top`](/classic/user/references/gitpod-cli#top) in your workspace, see the [Command Line
  Interface](/classic/user/references/gitpod-cli) documentation for more.
</Info>

<Frame caption="jetbrains performance">
  <img src="https://mintcdn.com/gitpod-13c83c2b/e8LRoo3UknjjGZet/images/jetbrains-gateway/jetbrains-performance-center.png?fit=max&auto=format&n=e8LRoo3UknjjGZet&q=85&s=299842ff722f4f1f5ea4c473dd8630b2" width="1168" height="1010" data-path="images/jetbrains-gateway/jetbrains-performance-center.png" />
</Frame>

## FAQs

* For the questions about supported IDEs and Editors in Gitpod, refer to [FAQs](/classic/user/references/ides-and-editors/faqs).

* For the general questions about JetBrains Remote Development, refer to refer to the general IDE <a href="https://www.jetbrains.com/help/rider/FAQ_about_remote_development.html" target="_blank">Rider FAQ</a>.

### Are there any JetBrains optimizations I can make if my workspace is slow?

Debugging performance can be challenging, as performance issues can depend on many factors such as how Gitpod is configured (if you're operating Gitpod on Self-Hosted). However, there are some ways you can gather performance information and optimise your JetBrains IDE setup with Gitpod:

1. Firstly, to gather information on performance, you can [view workspace performance metrics from within the IDE](/classic/user/references/ides-and-editors/intellij#workspace-performance) in the Backend Control Center, or by using [`gp top`](/classic/user/references/gitpod-cli#top).
2. You may also want to try adjusting the Max Heap Size allocated to the JetBrains Backend in the Settings tab of the Backend Control Center. If updating this setting helps your performance, you can set the `vmoptions` value for your JetBrains IDE in your `.gitpod.yml`.

<Info>
  If the performance metrics show that your workspace is hitting its resource
  limits, and you are using Gitpod Self-Hosted, it might make sense to
  consider changing the resource configuration for your workspaces. This can
  be done via a config-patch. Configuring workspace resources is not yet
  available on SaaS.
</Info>

## Troubleshooting

* [What should I do if JetBrains Gateway and Gitpod aren’t working?](/classic/troubleshooting#what-should-i-do-if-jetbrains-gateway-and-gitpod-arent-working)
* [Gitpod logs in JetBrains Client](/classic/troubleshooting#gitpod-logs-in-jetbrains-client)
* [Gitpod logs in JetBrains Gateway](/classic/troubleshooting#gitpod-logs-in-jetbrains-gateway)
