news 2026/4/15 23:58:53

.NET 10 社区SDK(Loongarch 和 RISC-V)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
.NET 10 社区SDK(Loongarch 和 RISC-V)

一、Loongarch(loongarch64 / Loongson)上 .NET 10

概览

发布:v10.0.100-loongarch64(tag)

发布者(自动化):github-actions[bot]

发布时间(UTC):2025-11-14T13:21:44Z

类型:prerelease(预发布)

目标分支:build

Release 页面正文为空(未附带额外说明),但包含一组构建产物(tar.gz 与 NuGet 包)用于 loongarch64 平台。

仓库:https://github.com/loongson/dotnet

重点说明

支持平台:loongarch64(即 Loongson CPU 架构的 Linux)。

覆盖范围:SDK、运行时(dotnet runtime)、ASP.NET Core 运行时、NativeAOT 运行时、Crossgen2、ILCompiler、Host 包和若干 native/系统库的 NuGet 包与源构建产物。

这是“预发布”构建,说明可能是针对 Loongson 社区或内部构建发布来验证在 loongarch64 上的兼容性和功能;在生产环境使用前应充分测试。

如何下载(示例)

直接使用 Release 下载 URL(示例):

https://github.com/loongson/dotnet/releases/download/v10.0.100-loongarch64/dotnet-sdk-10.0.100-linux-loongarch64.tar.gz

或在 Release 页面通过“Assets”手动下载相应文件。

快速安装(常规 tarball 安装步骤,适用于大多数 Linux 发行版)

下载 tarball 到主机

curl -L -o dotnet-sdk.tar.gz "https://github.com/loongson/dotnet/releases/download/v10.0.100-loongarch64/dotnet-sdk-10.0.100-linux-loongarch64.tar.gz"

解压并放到系统目录

sudo mkdir -p /usr/share/dotnet

sudo tar -zxf dotnet-sdk.tar.gz -C /usr/share/dotnet

创建可执行链接并设置环境变量

sudo ln -s /usr/share/dotnet/dotnet /usr/bin/dotnet

export DOTNET_ROOT=/usr/share/dotnet

export PATH=$PATH:/usr/share/dotnet (注:上面是常用做法,视你的发行版和安全策略调整。某些发行版或包管理器可能需要不同的步骤。)

测试建议

验证 dotnet 可执行:

dotnet --info

编译并运行一个简单的 Console 应用:

dotnet new console -o testapp && cd testapp && dotnet run

针对 ASP.NET:使用 aspnetcore-runtime 的示例应用部署与访问测试。

测试 NativeAOT、Crossgen2、以及涉及 System.IO.Ports 的功能(若你需要串口支持)。

风险与注意事项

由于是预发布版本,可能包含未解决的问题或性能/互操作性差异,建议在非生产环境先进行完整回归测试。

若你依赖第三方原生库或特定 Linux 发行版的 ABI,测试兼容性很重要。

二、RISC-V .NET 10

概览

发布标题 / 标签:10.0.100-rtm.25561.199 (tag: 10.0.100-rtm.25561.199)

发布时间:2025-11-12T00:45:00Z

发布类型:预发布 (prerelease: true)

目标分支:main

作者:github-actions[bot](自动化构建/上传)

仓库:https://github.com/filipnavara/dotnet-riscv

附件(资产):dotnet-sdk-10.0.100-rtm.25561.199-linux-riscv64.tar.gz

说明:这是为 Linux on RISC‑V (riscv64) 提供的 .NET 10 SDK 二进制包

简要解释

这是一个面向 RISC‑V(riscv64)的 .NET 10 SDK 的 RTM 构建包,发布为预发行版,表明它是供测试/早期试用的构建而非正式稳定发布(没有随附发布说明或变更日志)。资产名称显示这是一个 Linux 平台的 tar.gz 安装包。

三、基于GitHub Actions 流水线发布 .NET SDK

.NET 10 社区SDK(Loongarch 和 RISC-V)能够快速的同步进行构建发布,主要是从.NET 9 开始实现了基于同一套代码基线构建.NET SDK的基础设施,下面就基于 GitHub Actions 流水线发布 .NET SDK的原理与典型过程拆成几个部分来讲清楚:总体流程、关键步骤、所需凭证/基础设施、常见实现细节(包含示例 workflow 片段)、以及注意事项与最佳实践。最后我会列出如果你想要我继续可以帮你做的后续工作。

3.1、总体概念(为什么要用 CI/CD 发布 SDK)

目标:把源码编译成跨平台的 SDK 二进制/安装包(zip/tar、pkg/dmg、msi/deb/rpm 等),做签名、生成校验和、上传到发布位置(GitHub Release、Azure Blob/Storage、官方 feed 或镜像站),并更新安装脚本/渠道(例如 dotnet-install 脚本或网站上的版本清单)。

GitHub Actions 作为自动化引擎:触发(tag/release、手动/dispatch、定时)→ 构建 → 测试 → 打包/签名 → 发布 → 后置更新/通知。

区分 CI(PR 验证、快速构建)与 Release 流水线(正式标签触发、全量测试与签名、需要敏感凭据)。

3.2、典型流水线阶段(按顺序)

触发(Trigger)

常见触发:push tag(例如 v10.0.0-preview1 或 v10.0.0),release created、workflow_dispatch(手动触发)、或从发布协调器触发的 API 调用。

Release 流程通常只在经过人工审核或特殊权限后允许写入敏感凭据/生产证书的 runner 上运行。

环境准备 / Checkout

使用 actions/checkout 拉代码。

设置必要的运行环境(选择 runner:ubuntu-latest、windows-latest、macos-latest 或自托管 runner;很多 SDK 发布依赖自托管 Windows/macOS 机器来完成代码签名或生成 platform-specific installer)。

拉取子模块或相关 repo(例如 runtime、libraries、installer 模块等)。

引导/依赖安装

运行构建脚本的引导(对 .NET 常见是 repo 镶嵌的 build.ps1/build.sh 或使用 repo-toolset)。

如果是交叉构建,可能需要先安装早期版本的 dotnet 来做 bootstrapping(使用 dotnet-install 脚本或 actions/setup-dotnet)。

编译(Build)

多 OS/arch 的矩阵构建(x64/arm64;Windows/Linux/macOS)。

构建会生成 runtime、host、sdk 二进制,可能会调用 msbuild/dotnet build/clang/gcc 等。

构建输出分目录(sdk、shared runtime、hostfxr、hostpolicy、packs 等)。

测试(Tests)

单元测试、集成测试、回归测试。

对 Release 通常会更多:较长时间的 E2E、兼容性测试、安装与卸载测试、sample app 运行测试。

有时会在不同平台上做“smoke tests”来确保包可以实际执行。

打包(Package)

生成 SDK zip/tar、NuGet 包、Windows MSI、macOS pkg 或 dmg、Linux deb/rpm。

生成校验和(sha256/sha512),并生成版本元数据(manifest/json),用于后续下载/安装脚本解析。

签名(Code/Artifact Signing)

对可执行文件、安装包进行代码签名(Windows 使用 SignTool + EV 证书、macOS 使用 codesign + notarize、包使用 GPG 签名或微软的签名流程)。

这一步通常需要访问机密(证书、私钥、时间戳服务),生产环境多用自托管 runner 或安全的签名服务。

发布(Publish / Upload)

上传构建产物到发布存储:

GitHub Releases(创建 release 并上传 asset)

Azure Blob Storage / CDN(供下载安装)

官方 feed(如 NuGet、internal feeds)

镜像站、内部渠道

更新安装脚本或版本清单(例如更新 dotnet-install 的 JSON 或网站的下载页面),并将变更推送到相应 repo(可能需要另一个工作流或 API 调用)。

后置工作(Post-release)

通知(Slack 邮件)/更新文档/创建 release notes。

CDN 缓存失效、镜像同步。

监控发布后的用户反馈 / 自动化探测(如 health checks、telemetry 验证)。

3.3、关键基础设施与凭据

自托管 runners:用于访问私有签名证书或生成 macOS notarize(Apple 只在 macOS 上能做)。

Secrets(GitHub Secrets / Azure Key Vault / HashiCorp Vault):

代码签名证书(.pfx 或硬件密钥访问的凭据)。

Apple Developer 密钥、notary credentials。

GPG 私钥(如果用 GPG 签名)。

Azure Storage connection string / SAS token / Azure AD client secret(用于上传到 blob)。

NuGet API keys(发布包)。

GitHub token(用于创建 release、上传 release assets,注意权限限定)。

时间戳服务 / Timestamp URLs:在代码签名时保持长期有效性。

Artifact 存储与 CDN:用于高速下载并支持回滚/版本管理。

3.4、常见实现细节与自动化点

构建并行化:用矩阵 jobs 构建多个 OS/arch,或把某些构建拆成并行 job 来加速。

依赖缓存:actions/cache 缓存 NuGet 包和构建中间产物,减少重复耗时工作。

可复现/可审计:

生成 SBOM(软件物料清单)。

生成构建元数据(构建ID、commit、时间戳),并写入 release notes/manifest。

SLSA/Provenance:签署构建证明(使用 sigstore 等)以保证来源可验证。

Release gating 与手动审批:

对 release job 使用 environment protection rules(需要手动批准或审核)。

对访问敏感 secrets 的 job 限制为特定环境或 runner。

打包的跨平台差异:

Windows:MSI/ZIP/EXE,需 SignTool,可能还要生成 installer bootstrapper。

macOS:pkg/dmg, codesign + notarize(需要 Apple Notary)。

Linux:deb/rpm,不签名二进制但可以签署包(RPM签名、GPG)并上传到 apt/yum repo。

发布渠道管理:

维护“preview”和“stable”频道:通过不同 tag/manifest 决定 dotnet-install 脚本哪个版本被默认下载安装。

有时候会分阶段发布(先到 Canary/staging/insider,再到 public stable)。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/16 12:20:46

【期末分析题与改错题】

文章目录一、程序分析题项目结构分析题01分析题02分析题03分析题04二、程序改错题项目结构改错题01改错题02改错题03改错题04改错题05改错题06一、程序分析题 项目结构 分析题01 代码: package ProgramAnalysis; /*** 1.定义一个二维数组arr,包含3行3…

作者头像 李华
网站建设 2026/4/14 23:22:15

每日八股——Go(4)

gRPC是什么? gRPC (Google Remote Procedure Call) 是一个由谷歌开发的高性能、开源的RPC(远程调用)框架。简单来说,他的核心目的是:让你调用远程服务器上的函数(方法),就像调用本…

作者头像 李华
网站建设 2026/4/16 13:05:23

灌区PLC阀门远程监控运维系统方案

一、项目背景灌区作为农业用水的重要区域,其水资源的合理分配与高效利用直接关系到农业生产的稳定与发展。传统灌区管理方式中,PLC阀门往往依赖人工现场操作与监控,存在响应速度慢、管理效率低、资源分配不均等问题。随着物联网技术的发展&am…

作者头像 李华
网站建设 2026/4/16 12:22:27

Kubernetes集群升级指南

前言本文演示kubernetes集群从v1.24.1升级到v1.29.15。一、集群升级过程辅助命令&#xff08;1&#xff09;查看节点上运行的pod。kubectl get pod -o wide |grep <nodename>&#xff08;2&#xff09;查看集群配置文件。kubectl -n kube-system get cm kubeadm-config -…

作者头像 李华
网站建设 2026/4/6 0:41:24

维智 MCP 接口服务技术支持指南

&#xff08;一&#xff09;服务概述 维智 MCP Server 基于标准化 MCP 协议&#xff0c;整合丰富地理信息数据&#xff0c;为智能体提供地点搜索、正 / 逆地理编码、IP 定位解析、天气查询四大核心能力。数据覆盖城市级、街道级、坐标级查询&#xff0c;支持 HTTP/SSE 双传输协…

作者头像 李华
网站建设 2026/4/16 14:32:19

制造企业如何打通“三链”协同?一文讲清

目录 一、概念区分 1.产业链 2.供应链 3.价值链 二、那么&#xff0c;不协同具体会带来哪些问题&#xff1f; 1.目标不一致导致的行动矛盾 2.部门之间的优化相互冲突 3.创新想法受制于现实条件 三、怎么才能推动协同&#xff1f; 第一步&#xff0c;从统一目标和评价…

作者头像 李华