.NET

.NET (previously named .NET Core) is a 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 managed applications, install the dotnet-runtime package.

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

Lastly, to build dynamic web sites, applications, and services using ASP.NET Core, install aspnet-runtime.

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

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

Install multiple versions manually

You can install multiple versions of the .NET 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 "STS"(Standard Term Support) channel in /usr/share/dotnet:

# ./dotnet-install.sh --install-dir /usr/share/dotnet -channel STS -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 [/usr/share/dotnet/sdk]
3.0.103 [/usr/share/dotnet/sdk]
$ dotnet --version
3.0.103

Uninstall manually installed version

You may want to remove outdated versions installed with dotnet-install.sh. The automated .NET Uninstall Tool does still not support Linux, so the desinstallation has to be done manually.

$ dotnet --list-sdks
5.0.100 [/usr/share/dotnet/sdk]
5.0.102 [/usr/share/dotnet/sdk]

Desinstallation of the sdk:

$ SDK_VERSION="5.0.100"
$ DOTNET_UNINSTALL_PATH="/usr/share/dotnet"
# rm -rf $DOTNET_UNINSTALL_PATH/sdk/$SDK_VERSION

Using dotnet-install.sh also dotnet host and shared packages are getting installed, which may have to get removed additionally depending on the release.

Complete deinstallation of the .NET Version (sdk, host, shared):

$ SDK_VERSION="5.0.100"
$ DOTNET_VERSION="5.0.0"
$ DOTNET_UNINSTALL_PATH="/usr/share/dotnet"
# rm -rf $DOTNET_UNINSTALL_PATH/sdk/$SDK_VERSION
# rm -rf $DOTNET_UNINSTALL_PATH/shared/Microsoft.NETCore.App/$DOTNET_VERSION
# rm -rf $DOTNET_UNINSTALL_PATH/shared/Microsoft.AspNetCore.All/$DOTNET_VERSION
# rm -rf $DOTNET_UNINSTALL_PATH/shared/Microsoft.AspNetCore.App/$DOTNET_VERSION
# rm -rf $DOTNET_UNINSTALL_PATH/host/fxr/$DOTNET_VERSION

Install multiple versions via AUR

Some of the AUR dotnet packages are made to be installed alongside each other. Only one host package (dotnet-host-binAUR or ) is needed containing the command-line tool and you can install any of the available SDKs and Runtimes (latest packages of all major versions) next to it. List of compatible packages:

Install PowerShell Core

You can install PowerShell Core as a "global" tool also

# dotnet tool install --global PowerShell

to update to the current version

# dotnet tool update --global PowerShell

Telemetry

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

Tab-Completion

All dotnet programs that use to parse their arguments have auto-complete support. Enabling it just requires adding a few lines to your / file, as described in their documentation. Instructions for standalone binaries are here.

Troubleshooting

It was not possible to find any compatible framework version

If you get the following error when you try to run a newly created project, you no longer need to set a variable as described in the solutions of various GitHub issues. Arch's dotnet package (as of 3.1) installs it to the Microsoft recommended location of /usr/share/dotnet.

This is caused because the runtime is shipped as a separate package in Arch. You just need to make sure you have the aspnet-runtime package installed as well.

"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 pre-configured. If it is not, an error like this one could be observed:

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 in your shell:

Error MSB4019: The imported project "/usr/share/dotnet/sdk/.../Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.Sdk.Common.targets" was not found. Confirm that the expression in the Import declaration ... is correct, and that the file exists on disk.

This happens after an update. The currently running shell / login session is storing environment variables for the dotnet SDK version different from one installed. Restarting the shell or logging in again should fix this.

SDK specified could not be found

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

dotnet command still installed

Installed packages do not uninstall dotnet-host, so uninstall dotnet-host

gollark: The EM spectrum is shared between everyone, see, so it would be bad if you apified it.
gollark: Someone will hunt them down and bee them.
gollark: Someone will hunt them down and bee them.
gollark: Oh, velocity minus gollark, of course.
gollark: Verbose gollark?

See also

This article is issued from Archlinux. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.