.NET
.NET(旧称 .NET Core)是 Microsoft 开发的开源软件框架,支持 C#, Visual Basic 和 F#。和之前的 .NET Framework 相比,它支持跨平台开发,设计上更加模块化,面向现代程序开发。
.NET 源码位于存放在 Github 上的 dotnet/dotnet。
安装[编辑 | 编辑源代码]
如果要运行 .NET 管理的程序,请安装 dotnet-runtime包。
要使用 .NET 编译程序,还需要安装 dotnet-sdk包。
要使用 ASP.NET Core 建立动态网站,应用和服务,安装 aspnet-runtime包.
微软推荐使用 Visual Studio Code 编译和调试 .NET 程序,它是微软开发的基于 Electron 的开源 IDE。
~/.dotnet/tools
加入 PATH
,否则 dotnet 工具无法在 shell 中启动。如果要使用 .NET 6.0,将上述包加上“-6.0”后缀即可(例如 dotnet-runtime-6.0包,dotnet-sdk-6.0包 和 aspnet-runtime-6.0包)
版本区别[编辑 | 编辑源代码]
.NET SDKs are published under several version schemes. Only SDK versions 1xx
can be built from source and will be available in the official repositories. Should you require any other version you will need one of the *-bin
packages from AUR.
手动安装多个版本[编辑 | 编辑源代码]
你可以通过执行 .NET 官方提供的 dotnet-install.sh 脚本来同时安装 .NET SDK 或 .NET 运行时的多个版本。另外,你可以在 此链接中找到关于这个脚本的说明。
例如,该命令将安装“STS”(标准期限支持)频道的最新版本到 /usr/share/dotnet
:
# ./dotnet-install.sh --install-dir /usr/share/dotnet -channel STS -version latest
你可以先使用 -Dryrun
来模拟安装。
脚本执行完毕后,你可以通过以下命令来验证是否安装成功:
$ dotnet --list-sdks
2.2.108 [/usr/share/dotnet/sdk] 3.0.103 [/usr/share/dotnet/sdk]
$ dotnet --version
3.0.103
手动卸载已安装版本[编辑 | 编辑源代码]
官方提供的卸载工具 .NET Uninstall Tool 尚无 Linux 支持,如果你想卸载以前通过 dotnet-install.sh
脚本安装的过时版本,需要手动操作。
$ dotnet --list-sdks
5.0.100 [/usr/share/dotnet/sdk] 5.0.102 [/usr/share/dotnet/sdk]
解除特定版本的安装:
$ SDK_VERSION="5.0.100" $ DOTNET_UNINSTALL_PATH="/usr/share/dotnet" # rm -rf $DOTNET_UNINSTALL_PATH/sdk/$SDK_VERSION
dotnet-install.sh
同时会安装 dotnet host 及共享包,根据版本不同可能需要单独进行移除。
你可能会安装了一些额外的依赖,通过下面的命令移除他们:
$ 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
通过 AUR 安装多个版本[编辑 | 编辑源代码]
Some of the AUR dotnet packages are made to be installed alongside each other. Only one host package (dotnet-host-binAUR or dotnet-host包) 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:
- dotnet-host-binAUR, dotnet-runtime-binAUR, aspnet-runtime-binAUR, dotnet-sdk-binAUR
- dotnet-host-preview-binAUR, dotnet-runtime-preview-binAUR, aspnet-runtime-preview-binAUR, dotnet-sdk-preview-binAUR
- dotnet-runtime-7.0-binAUR, aspnet-runtime-7.0-binAUR, dotnet-sdk-7.0-binAUR,
- dotnet-runtime-3.0AUR, aspnet-runtime-3.0AUR, dotnet-sdk-3.0AUR,
- dotnet-runtime-2.2AUR, aspnet-runtime-2.2AUR, dotnet-sdk-2.2AUR, dotnet-sdk-2.2-vs2017AUR
- dotnet-runtime-2.1AUR, aspnet-runtime-2.1AUR, dotnet-sdk-2.1AUR
安装 PowerShell Core[编辑 | 编辑源代码]
你可以将 PowerShell Core 安装为“全局”工具 [1] [2]
# dotnet tool install --global PowerShell
按如下方法将其升级到最新版本
# dotnet tool update --global PowerShell
遥测[编辑 | 编辑源代码]
Microsoft 构建的 .NET SDK 默认启用遥测。AUR .NET SDK 包(*-bin
变体)基于 Microsoft 构建的 .NET。.NET 运行时组件在任何情况下都不收集遥测信息。
社区构建版本(包括 Arch;从 .NET 7 开始)不收集遥测数据,这是由 Red Hat 对 .NET SDK 做出的更改。
可以通过设置环境变量 DOTNET_CLI_TELEMETRY_OPTOUT=1
来关闭遥测。
Tab 自动补全[编辑 | 编辑源代码]
All dotnet programs that use System.CommandLine.Parser
to parse their arguments have auto-complete support. Enabling it just requires adding a few lines to your .bashrc
/ .zshrc
file, as described in their documentation. Instructions for standalone binaries are here.
故障排除[编辑 | 编辑源代码]
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 DOTNET_ROOT
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
.
$ dotnet run
It was not possible to find any compatible framework version The framework 'Microsoft.AspNetCore.App', version '3.1.0' was not found. - No frameworks were found. You can resolve the problem by installing the specified framework and/or SDK. The specified framework can be found at: - https://aka.ms/dotnet-core-applaunch?framework=Microsoft.AspNetCore.App&framework_version=3.1.0&arch=x64&rid=arch-x64
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 DOTNET_ROOT
pre-configured. If it is not, an error like this one could be observed: [3]
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
[编辑 | 编辑源代码]
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[编辑 | 编辑源代码]
这被认为是 Mono 和 MSBuild SDK 库及 dotnet 库冲突了。要修正该问题,需参考如下方式手动在 shell 中设置路径(按需将示例中的版本号替换为实际安装的版本):
~/.bashrc
export MSBuildSDKsPath=$( echo /usr/share/dotnet/sdk/3.*/Sdks );
dotnet command still installed[编辑 | 编辑源代码]
Installed packages do not uninstall dotnet-host, so uninstall dotnet-host包