.NET Core

From ArchWiki
Jump to navigation Jump to search

.NET Core is a new FOSS software framework from Microsoft for C#, Visual Basic, and F#. It is designed to be cross-platform, modular and apt for modern applications, as opposed to its predecessor, the .NET Framework.

Installation

If you only want to run .NET Core managed applications, install the dotnet-runtime package.

To build apps with .NET Core, install dotnet-sdk as well.

Microsoft recommends using Visual Studio Code , their Electron-based FOSS IDE, to build & debug .NET Core apps.

Tip: Add ~/.dotnet/tools to PATH, otherwise dotnet tools will not work from shell.

Install multiple versions

You can install multiple versions of the .NET Core SDK or runtime side by side by using the dotnet-install.sh script provided by the .NET Foundation. You can find the documentation of the script here.

For instance, this command would install the latest version found in the "current" channel in /opt/dotnet:

# ./dotnet-install.sh --install-dir /opt/dotnet -channel Current -version latest

You may want to simulate the installation first by using the -Dryrun flag.

Once installed, you can verify the SDKs available:

$ dotnet --list-sdks                                                                 
2.2.108 [/opt/dotnet/sdk]
3.0.100 [/opt/dotnet/sdk]
$ dotnet --version
3.0.100

Telemetry

Telemetry is enabled by default but can be disabled by setting environment variable DOTNET_CLI_TELEMETRY_OPTOUT=1.

Troubleshooting

"the required library libhostfxr.so could not be found" error

Some of the dotnet SDK tools (for example libman, dotnet-watch etc.) may expect you to have the environment variable DOTNET_ROOT pre-configured. If it's not, an error like this one could be observed: [1]

A fatal error occurred, the required library libhostfxr.so could not be found.
If this is a self-contained application, that library should exist in [/home/my_user/.dotnet/tools/.store/microsoft.web.librarymanager.cli/1.0.172/microsoft.web.librarymanager.cli/1.0.172/tools/netcoreapp2.1/any/].
If this is a framework-dependent application, install the runtime in the default location [/usr/share/dotnet] or use the DOTNET_ROOT environment variable to specify the runtime location.

The workaround is to manually export DOTNET_ROOT in your shell:

~/.bashrc
export DOTNET_ROOT=/opt/dotnet

SDK specified could not be found

This is believed to caused by a conflict between the Mono and MSBuild SDK libs and the dotnet core ones. To fix this export the path manually in your shell (replacing the version number as necessary) e.g:

~/.bashrc
export MSBuildSDKsPath="/opt/dotnet/sdk/2.2.108/Sdks/";

See also