Using .NET 5 with Rider on Linux
Tags: dotnet, linux, tutorial, rider
Published: 2020-06-21 20:05:59

A simple and quick approach to use .NET 5 Preview with JetBrains Rider on Linux.

> Before install is important to check .NET 5 - [Supported OS  versions](https://github.com/dotnet/core/blob/master/release-notes/5.0/5.0-supported-os.md#net-5---supported-os-versions)

#Installing

1 - Create a directory to use for the download location and change into that directory, for example:

```bash
mkdir $HOME/dotnet_install && cd $HOME/dotnet_install
```
2 - Download the shell script with instructions:

```bash
curl -H 'Cache-Control: no-cache' -L https://aka.ms/install-dotnet-preview 
-o install-dotnet-preview.sh
```

3 - Run the script to begin the install:

```bash
sudo bash install-dotnet-preview.sh
```

The last step will download and unzip all packages and dependencies into `dotnet_packages/` and then start the installation.

But if the environment is not "clean", it is possible that packages conflicts happen. In this case, the script will stop the execution, then we can do the installations manually, solving or replacing dependencies on conflicts.

```bash
cd dotnet_install

ls -l
  dotnet-5.0.0-preview.5-rpm.tar.gz  
  dotnet_packages/  
  install-dotnet-preview.sh
```

Use package manager of your preference, and install all the SDK's, Runtimes, and dependencies packages. In this example, we decided to replace files:

```bash
cd dotnet_packages

ls -l
  aspnetcore-runtime-5.0.0-preview.5.20279.2-x64.rpm
  aspnetcore-targeting-pack-5.0.0-preview.5.20279.2.rpm
  dotnet-apphost-pack-5.0.0-preview.5.20278.1-x64.rpm
  dotnet-host-5.0.0-preview.5.20278.1-x64.rpm
  dotnet-hostfxr-5.0.0-preview.5.20278.1-x64.rpm
  dotnet-runtime-5.0.0-preview.5.20278.1-x64.rpm
  dotnet-runtime-deps.rpm
  dotnet-sdk-5.0.100-preview.5.20279.10-x64.rpm
  dotnet-targeting-pack-5.0.0-preview.5.20278.1-x64.rpm
  netstandard-targeting-pack-2.1.0-x64.rpm

sudo rpm -i --replacefiles netstandard-targeting-pack-2.1.0-x64.rpm
```
###OR

If you prefer an **isolated environment** and a more **simple setup**, you can install it using **[Snap](https://github.com/dotnet/core/blob/master/release-notes/5.0/preview/5.0.0-preview.5-install-instructions.md#install-using-snap)**.

If the **[dotnet CLI](https://docs.microsoft.com/pt-br/dotnet/core/tools/)** already installed, it's recommended to use an alias to differentiate the versions:

```bash
sudo snap alias dotnet-sdk.dotnet dotnet5
```

And then you can use it this way:

```bash
dotnet5 restore

dotnet5 build

...
```
> *For more instructions or ways to install SDK/Runtime, use [this documentation](https://github.com/dotnet/core/blob/master/release-notes/5.0/preview/5.0.0-preview.5-install-instructions.md).*

#Rider settings

If .NET 5 was installed into the default path, then Rider will detect the **MSBuild** version **16.0** automatically.

![](https://cdn-images-1.medium.com/max/1200/1*AGQGMqGruUXt9x3r8uyovw.png)

But, if it was in a different folder, as **[Snap installation](https://github.com/dotnet/core/blob/master/release-notes/5.0/preview/5.0.0-preview.5-install-instructions.md#install-using-snap)**, for example, it's necessary to inform .NET Core CLI executable and MSBuild version 16.0 on Rider settings, like this:

![](https://cdn-images-1.medium.com/max/800/1*1p1FH0z0exDyEkeDVFjSPw.png)

If other versions are installed, it may be necessary to change the SDK version in `global.json` to 5, allowing Rider to automatically detect MS Build 16.

```JSON
{
  "sdk": {
    "version": "5.0.100-preview.5.20279.10"
  }
}
```

#Projects settings

Now, we can build applications using preview version from .NET 5 just indicating on **C Sharp Project** (*.CSPROJ) file the respective versions from framework and language:

```XML
<Project Sdk="Microsoft.NET.Sdk.Web">

    <PropertyGroup>
        <TargetFramework>net5.0</TargetFramework>
        <LangVersion>preview</LangVersion>
    </PropertyGroup>

</Project>
```

Until this moment, Rider's version 2020.1 does not give support for **C# 9** syntax and code inspections, so to use new features is necessary flexibility the [code inspections](https://www.jetbrains.com/help/rider/Code_Analysis__Code_Inspections.html).

#Enjoy!

{% github AntonioFalcao/AntonioFalcao %}