首页 > 其他分享 >dotnet的Runtime和SDK的版本号差异

dotnet的Runtime和SDK的版本号差异

时间:2024-11-20 14:19:38浏览次数:1  
标签:install 版本号 -- https dotnet download Runtime bash

摘要

上周微软发布了NET 9正式版本,我用官网介绍的方式为Gitlab Runner制作包含NET 9环境的映像,才发现Runtie和SDK的版本号差别。

安装Dotnet的Runtime

Dockerfile中语句如下:

# 使用官方脚本安装 .NET SDK 版本
RUN wget -qO- https://dotnet.microsoft.com/download/dotnet/scripts/v1/dotnet-install.sh | bash /dev/stdin --version 5.0.17 --install-dir /usr/share/dotnet --runtime dotnet
RUN wget -qO- https://dotnet.microsoft.com/download/dotnet/scripts/v1/dotnet-install.sh | bash /dev/stdin --version 6.0.36 --install-dir /usr/share/dotnet --runtime dotnet
RUN wget -qO- https://dotnet.microsoft.com/download/dotnet/scripts/v1/dotnet-install.sh | bash /dev/stdin --version 7.0.20 --install-dir /usr/share/dotnet --runtime dotnet
RUN wget -qO- https://dotnet.microsoft.com/download/dotnet/scripts/v1/dotnet-install.sh | bash /dev/stdin --version 8.0.11 --install-dir /usr/share/dotnet --runtime dotnet
RUN wget -qO- https://dotnet.microsoft.com/download/dotnet/scripts/v1/dotnet-install.sh | bash /dev/stdin --version 9.0.0 --install-dir /usr/share/dotnet --runtime dotnet

制作映像成功,Gitlab Runner使用这个映像执行Docker in Docker的任务时,报错:

$ dotnet build "modules/********.csproj"
/usr/bin/bash: line 159: dotnet: command not found

为什么要安装SDK?

如果你安装的是 .NET 运行时(Runtime)而不是 .NET SDK,那么 dotnet 命令可能不会可用,因为运行时主要用于运行 .NET 应用程序,而 SDK 提供了开发工具和编译器等。

因此安装虽然安装了Runtime,但是在Gitlab Runner里执行dotnet开头的各种命令,会提示找不到命令。

因此修改Dockerfile语句如下:

# 使用官方脚本安装 .NET SDK 版本
RUN wget -qO- https://dotnet.microsoft.com/download/dotnet/scripts/v1/dotnet-install.sh | bash /dev/stdin --version 5.0.17 --install-dir /usr/share/dotnet
RUN wget -qO- https://dotnet.microsoft.com/download/dotnet/scripts/v1/dotnet-install.sh | bash /dev/stdin --version 6.0.36 --install-dir /usr/share/dotnet
RUN wget -qO- https://dotnet.microsoft.com/download/dotnet/scripts/v1/dotnet-install.sh | bash /dev/stdin --version 7.0.20 --install-dir /usr/share/dotnet
RUN wget -qO- https://dotnet.microsoft.com/download/dotnet/scripts/v1/dotnet-install.sh | bash /dev/stdin --version 8.0.11 --install-dir /usr/share/dotnet
RUN wget -qO- https://dotnet.microsoft.com/download/dotnet/scripts/v1/dotnet-install.sh | bash /dev/stdin --version 9.0.0 --install-dir /usr/share/dotnet

使用docker build命令,报错如下:

Step 10/25 : RUN wget -qO- https://dotnet.microsoft.com/download/dotnet/scripts/v1/dotnet-install.sh | bash /dev/stdin --version 5.0.17 --install-dir /usr/share/dotnet
 ---> Running in 44fc4f89f1ab
dotnet-install: Attempting to download using primary link https://dotnetcli.azureedge.net/dotnet/Sdk/5.0.17/dotnet-sdk-5.0.17-linux-x64.tar.gz
--2024-11-20 05:25:43--  https://dotnetcli.azureedge.net/dotnet/Sdk/5.0.17/dotnet-sdk-5.0.17-linux-x64.tar.gz
Resolving dotnetcli.azureedge.net (dotnetcli.azureedge.net)... 117.18.232.200, 2606:2800:147:120f:30c:1ba0:fc6:265a
Connecting to dotnetcli.azureedge.net (dotnetcli.azureedge.net)|117.18.232.200|:443... connected.
HTTP request sent, awaiting response... 404 The specified blob does not exist.
2024-11-20 05:25:45 ERROR 404: The specified blob does not exist..

就是无法下载5.0.17的SDK安装包。

解决方案

来到NET 5官网下载,页面截图如下:

img

发现Runtime时5.0.17,但是却有多个SDK版本。我们安装命令既然是针对SDK了,自然该用SDK的版本号了。

使用最新的版本号,修改了安装NET 5的命令如下:

RUN wget -qO- https://dotnet.microsoft.com/download/dotnet/scripts/v1/dotnet-install.sh | bash /dev/stdin --version 5.0.408 --install-dir /usr/share/dotnet

再执行docker build,一切正常。

在微软官网,安装各个Dotnet最新SDK的命令,调整到位后如下:

# 使用官方脚本安装 .NET SDK 版本
RUN wget -qO- https://dotnet.microsoft.com/download/dotnet/scripts/v1/dotnet-install.sh | bash /dev/stdin --version 5.0.408 --install-dir /usr/share/dotnet
RUN wget -qO- https://dotnet.microsoft.com/download/dotnet/scripts/v1/dotnet-install.sh | bash /dev/stdin --version 6.0.428 --install-dir /usr/share/dotnet
RUN wget -qO- https://dotnet.microsoft.com/download/dotnet/scripts/v1/dotnet-install.sh | bash /dev/stdin --version 7.0.410 --install-dir /usr/share/dotnet
RUN wget -qO- https://dotnet.microsoft.com/download/dotnet/scripts/v1/dotnet-install.sh | bash /dev/stdin --version 8.0.404 --install-dir /usr/share/dotnet
RUN wget -qO- https://dotnet.microsoft.com/download/dotnet/scripts/v1/dotnet-install.sh | bash /dev/stdin --version 9.0.100 --install-dir /usr/share/dotnet

使用docker build后,push到仓库,Gitlab Runner使用这个映像后,正确执行了dotnet的命令。

标签:install,版本号,--,https,dotnet,download,Runtime,bash
From: https://www.cnblogs.com/amisoft/p/18556680/version-of-runtime-and-sdk-is-different

相关文章

  • 解决RuntimeError: Numpy is not available
    解决RuntimeError:Numpyisnotavailable  这是因为Numpy版本太高,将现有Numpy卸载pipuninstallnumpy安装numpy=1.26.4,解决此问题pipinstallnumpy==1.26.4-ihttps://pypi.tuna.tsinghua.edu.cn/simple......
  • 如何在Ubuntu 20.04 LTS上安装Dotnet Core?
    在本教程中,我们将向您展示如何在香港服务器的Ubuntu20.04LTS系统上安装DotnetCore。.NETCore是一个免费的开源软件框架和开源软件框架。它是由Microsoft开发的。它是由Microsoft开发的。.NETCore是一个非常强大的框架。它通常用于开发Web应用程序。步骤1.首先,通过apt在......
  • 配置NVIDIA Container Runtime和容器运行GPUStack教程
    GPUStack是一个设计用于运行大模型的开源GPU集群管理器,提供私有部署的大模型服务,支持大语言模型、Embedding文本嵌入模型、Reranker重排序模型、Vision多模态模型等各种模型。它可以聚合不同平台(如AppleMacbook、WindowsPC和Linux服务器)的GPU,构建一个统一的异构GPU......
  • 配置NVIDIA Container Runtime和容器运行GPUStack教程
    GPUStack是一个设计用于运行大模型的开源GPU集群管理器,提供私有部署的大模型服务,支持大语言模型、Embedding文本嵌入模型、Reranker重排序模型、Vision多模态模型等各种模型。它可以聚合不同平台(如AppleMacbook、WindowsPC和Linux服务器)的GPU,构建一个统一的异构GPU......
  • class not found Runtime/~runtime.php
    问题分析原因:ThinkPHP站点的缓存目录 Runtime 从其他服务器迁移至云虚拟主机时,可能包含了一些不兼容的缓存文件或目录信息,导致类文件无法被正确加载。解决方案:删除或重命名 Runtime 目录,让ThinkPHP重新生成新的缓存文件。操作步骤登录云虚拟主机使用SSH工具(如PuTTY)......
  • agent runtime
    GoEx:ARuntimeforAutonomousLLMApplicationshttps://gorilla.cs.berkeley.edu/blogs/10_gorilla_exec_engine.html MovingfromChatbotstoAutonomousAgents......
  • C# read json file throw exception: Could not load file or assembly 'System.Runti
    Couldnotloadfileorassembly'System.Runtime.CompilerServices.Unsafe,Version=4.0.4.1,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a'oroneofitsdependencies.Thelocatedassembly'smanifestdefinitiondoesnotmatchtheassemblyr......
  • 容器runtime
    https://forum.huawei.com/enterprise/en/comprehensive-comparison-of-docker-containerd-and-cri-o/thread/714267095098867712-667213860488228864https://duyanghao.github.io/sample-container-runtime/https://docs.openeuler.org/zh/docs/22.03_LTS_SP2/docs/Contain......
  • fio:选择基于size与基于time的测试,还是即基于size又基于time?其中关键的测试方向参数:-ti
    默认是基于size的(当指定-filename时,如果该文件或裸设备存在,则fio默认使用其文件或设备的size大小;如果不存在,fio会报错并提示你)。此时,如果你【未指定】-runtime,如果-filename的文件或裸设备以及io完了,测试即结束。      如果你指定了-runtime,如果-filename的文件或裸......
  • 查看IIS版本号
    要查看IIS版本,有几种常用的方法:通过IIS管理器查看版本:打开IIS管理器,可以通过在Windows操作系统的开始菜单中搜索"IIS管理器"来找到。在IIS管理器中,选择“帮助”->“关于Internet信息服务”,在弹出的对话框中可以看到IIS的版本号。通过命令行查看版本(没试出来):打开命令提......