Debian 安装 .NET 的汇总

1.APT 安装

使用 APT 进行安装可通过几个命令来完成。 安装 .NET 之前,请运行以下命令,将 Microsoft 包签名密钥添加到受信任密钥列表,并添加包存储库。

打开终端并运行以下命令:

Bash复制

wget https://packages.microsoft.com/config/debian/12/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
sudo dpkg -i packages-microsoft-prod.deb
rm packages-microsoft-prod.deb

安装 SDK

.NET SDK 使你可以通过 .NET 开发应用。 如果安装 .NET SDK,则无需安装相应的运行时。 若要安装 .NET SDK,请运行以下命令:

Bash复制

sudo apt-get update && \
  sudo apt-get install -y dotnet-sdk-8.0

2.脚本安装

dotnet-install 脚本用于 SDK 和运行时的自动化和非管理员安装。

Bash复制

wget https://dot.net/v1/dotnet-install.sh -O dotnet-install.sh
chmod +x ./dotnet-install.sh
./dotnet-install.sh --version latest

有关详细信息,请参阅 dotnet-install 脚本参考

若要在命令行上启用 .NET,请参阅设置系统范围的环境变量

在 shell 配置文件中设置以下两个环境变量:

手动安装 .NET 不会添加系统范围的环境变量,并且通常仅适用于安装 .NET 的会话。 应为操作系统设置两个环境变量:

  • DOTNET_ROOT此变量设置为 .NET 安装到的文件夹,例如 $HOME/.dotnet(对于 Linux 和 macOS )和 PowerShell 中的 $HOME\.dotnet(对于 Windows)。
  • PATH此变量应同时包含 DOTNET_ROOT 文件夹和用户的 .dotnet/tools 文件夹。 通常,在 Linux 和 macOS 上为 $HOME/.dotnet/tools,在 Windows 上为 PowerShell 中的 $HOME\.dotnet\tools

 提示

对于 Linux 和 macOS,请使用 echo 命令在 shell 配置文件中设置变量,例如 .bashrc:

Bash复制

echo 'export DOTNET_ROOT=$HOME/.dotnet' >> ~/.bashrc
echo 'export PATH=$PATH:$DOTNET_ROOT:$DOTNET_ROOT/tools' >> ~/.bashrc

问题处理:bash: dotnet: command not found

某些情况下,当使用APT安装完成之后,dotnet --info 显示 命令没有找到!使用ll查看 “/usr/bin/dotnet” 链接 指向 “/usr/share/dotnet/dotnet”,但是/usr/share/dotnet/dotnet中并没有dotnet文件。

ll /usr/bin/dotnet
lrwxrwxrwx 1 root root 24 Dec 28 19:22 /usr/bin/dotnet -> /usr/share/dotnet/dotnet

发现APT安装时缺少文件,产生的文件数量不完整。

处理方法:先使用安装脚本安装到 “.dotnet/”文件夹下,拷贝文件到 /usr/share/dotnet,再 使用 ln 链接到 /usr/share/dotnet/dotnet(已创建链接,可以跳过),然后删除 .dotnet 文件夹。

wget https://dot.net/v1/dotnet-install.sh
chmod +x dotnet-install.sh
./dotnet-install.sh
cp -r -n .dotnet/* /usr/share/dotnet
ln -s /usr/share/dotnet/dotnet /usr/bin/dotnet
rm -rf .dotnet

注意:APT安装 在 “.dotnet”文件夹 ,脚本安装 在 “/usr/share/dotnet”文件夹中。所以不要两种安装方法同时,会创建两个副本,占用1个G的空间。可以使用上面的命令,脚本安装,复制子文件后删除一个副本。


问题处理:找不到\无法安装某些包

如果收到类似于“找不到包 {dotnet-package}”或“无法安装某些包”的错误消息,请运行以下命令

以下命令组中有两个占位符。

  • {dotnet-package}
    此项表示要安装的 .NET 包,如 aspnetcore-runtime-8.0。 它在以下 sudo apt-get install 命令中使用。
  • {os-version}
    这表示你正在使用的发行版。 此项在以下 wget 命令中使用。 发行版是数值,如 Ubuntu 上的 20.04 或 Debian 上的 10

首先,尝试清除包列表:

Bash复制

sudo dpkg --purge packages-microsoft-prod && sudo dpkg -i packages-microsoft-prod.deb
sudo apt-get update

然后,再次尝试安装 .NET。 如果这不起作用,可使用以下命令运行手动安装:

Bash复制

sudo apt-get install -y gpg
wget -O - https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor -o microsoft.asc.gpg
sudo mv microsoft.asc.gpg /etc/apt/trusted.gpg.d/
wget https://packages.microsoft.com/config/debian/{os-version}/prod.list
sudo mv prod.list /etc/apt/sources.list.d/microsoft-prod.list
sudo chown root:root /etc/apt/trusted.gpg.d/microsoft.asc.gpg
sudo chown root:root /etc/apt/sources.list.d/microsoft-prod.list
sudo apt-get update && \
  sudo apt-get install -y {dotnet-package}

手动删除 .NET 运行时和 SDK

如果使用 dotnet-install 脚本或通过提取 tarball 来安装 .NET,则必须使用手动方法删除 .NET。

手动安装 .NET 时,它通常安装到 /usr/share/dotnet//usr/lib/dotnet/ 或 $HOME/.dotnet 目录中。 SDK、运行时和 .NET 主机安装到单独的子目录中。 这些“组件”目录包含每个 .NET 版本的目录。 通过删除版本控制目录,可以从系统中删除该版本的 .NET。 这些目录可能因你的 Linux 分发版而异。

可以使用三个命令来发现 .NET 的安装位置:dotnet --list-sdks(用于 SDK)、dotnet --list-runtimes(用于运行时)和 dotnet --info(用于所有内容)。 这些命令不会列出 .NET 主机。 若要确定安装了哪些主机,请检查 /usr/share/dotnet/host/fxr/ 目录。 以下列表表示特定版本的 .NET 的目录,其中 $version 变量表示 .NET 的版本:

  • SDK/usr/share/dotnet/sdk/$version/
  • 运行时:运行时基于特定的 .NET 产品运行时,例如 Microsoft.AspNetCore.All 或 Microsoft.NETCore.App(特别是 .NET 运行时)。 它们将安装到 /usr/share/dotnet/shared/$product/$version 目录,其中 $product 是产品运行时。 例如,可能会看到以下目录:复制/usr/share/dotnet/shared/Microsoft.NETCore.App/$version/ /usr/share/dotnet/shared/Microsoft.AspNetCore.App/$version/ /usr/share/dotnet/shared/Microsoft.AspNetCore.All/$version/
  • .NET 主机/usr/share/dotnet/host/fxr/$version/

使用 rm -rf 命令删除 .NET 版本。 例如,若要删除 6.0.406 SDK,请运行以下命令:

Bash复制

sudo rm -rf /usr/share/dotnet/sdk/6.0.406

 重要

版本目录可能与要卸载的“版本”不匹配。 与单个 .NET 版本一起安装的各个运行时和 SDK 可能具有不同的版本。 例如,你可能安装了 ASP.NET Core 8 运行时,其中安装了 8.0.2 ASP.NET Core 运行时和 8.0.8. NET 运行时。 二者有不同版本的目录。 有关详细信息,请参阅 .NET 的版本控制方式概述


使用 URL 配置终结点

以下部分介绍如何使用以下方式配置终结点:

  • ASPNETCORE_URLS 环境变量。
  • --urls 命令行参数。
  • urls 主机配置键。
  • UseUrls 扩展方法。
  • WebApplication.Urls 属性。

在 Linux 上使用 linux-dev-certs 信任 HTTPS 证书

dotnet tool update -g linux-dev-certs
dotnet linux-dev-certs install

安装dotnet 脚本

dotnet tool install -g csharprepl
dotnet tool install -g dotnet-script
dotnet tool install -g Microsoft.dotnet-httprepl

查看安装的脚本

dotnet tool list -g
其他命令:

install <PACKAGE_ID> Install global or local tool. Local tools are added to manifest and restored.

uninstall <PACKAGE_ID> Uninstall a global tool or local tool.

update <PACKAGE_ID> Update a global or local tool.

list <PACKAGE_ID> List tools installed globally or locally.

run <COMMAND_NAME> <toolArguments> Run a local tool. Note that this command cannot be used to run a global tool.

search <SEARCH_TERM> Search dotnet tools in nuget.org

restore Restore tools defined in the local tool manifest.

Asp.Net core Linux 监听端口的设置

在linux测试跑.net core,默认端口是5000,5001. 需要修改

尝试有以下几种方式:

1. 在项目csproj文件在linux中,编辑Properties/launchSettings.json文件中的 “applicationUrl”: “http://*:5000;http://*:5050”

2.编辑Program,直接在代码里定义

public class Program
{
    public static void Main(string[] args)
    {
        var host = new WebHostBuilder()
            .UseKestrel()
            .UseContentRoot(Directory.GetCurrentDirectory())
            .UseIISIntegration()
            .UseStartup<Startup>()
            .UseUrls("http://*:5001/")
            .Build();

        host.Run();
    }
}

3.添加配置文件hosting.json,然后在Program中加载配置文件

public static void Main(string[] args)
{
    var config = new ConfigurationBuilder()
        .SetBasePath(Directory.GetCurrentDirectory())
        .AddJsonFile("hosting.json", true)
        .Build();

    var host = new WebHostBuilder()
        .UseKestrel(options => options.AddServerHeader = false)
        .UseConfiguration(config)
        .UseContentRoot(Directory.GetCurrentDirectory())
        .UseIISIntegration()
        .UseStartup<Startup>()
        .Build();

    host.Run();
}

4. 直接启动时增加参数,两种

在发布文件夹下直接加载dll:

dotnet WebApp1.dll --server.urls "http://*:5001;http://*:5002"

在项目文件下:

dotnet run --urls="http://*:5001/;http://*:5051/"

 

CentOS Install .NET Core

.NET Tutorial – Hello World in 10 minutes

https://www.microsoft.com/net/learn/get-started-with-dotnet-tutorial

Add the dotnet product feed

Before installing .NET, you’ll need to register the Microsoft key, register the product repository, and install required dependencies. This only needs to be done once per machine.

Open a command prompt and run the following commands:

sudo rpm -Uvh https://packages.microsoft.com/config/rhel/7/packages-microsoft-prod.rpm

Install .NET Core SDK on Linux CentOS / Oracle

https://www.microsoft.com/net/download/linux-package-manager/centos/sdk-current

sudo yum update
sudo yum install dotnet-sdk-2.1

Install .NET Core Runtime on Linux CentOS / Oracle

https://www.microsoft.com/net/download/linux-package-manager/centos/runtime-current

sudo yum update
sudo yum install aspnetcore-runtime-2.1