龍芯平臺.NET,是龍芯公司基於開源社群.NET獨立研發適配的龍芯版本,我們會長期進行安全更新和錯誤修復,並持續進行效能優化。社群.NET7版本開始已經原生支援LoongArch64架構原始碼。具備如下特性:
- 跟進社群最新版本,獲取及時的安全更新和問題修復
- 支援多OS:Loongnix、統信UOS、中標麒麟等64位作業系統
- 支援LoongArch架構
- 明確的、多版本的產品維護計劃
- 專業團隊支援
龍芯最近釋出的LoongArch64架構的.NET6.0-SDK是基於上游社群.NET6.0-LTS-SDK製作的,同樣是LTS版本,在生命週期維護範圍內,會持續進行更新升級。龍芯同時釋出了.NET 文件網站:http://docs.loongnix.cn/dotnet/
龍芯LoongArch64版.NET 6 下載地址:http://www.loongnix.cn/zh/api/dotnet
對應的上游社群版本為.NET 6,tag: v6.0.105-SDK, tag: v6.0.5-runtime。
開發過程中可能需要依賴一些平臺相關的 nupkg 資源,可在龍芯Nuget源搜尋下載:http://nuget.loongnix.cn:5000/。相關配置方法請見龍芯Nuget源配置方法。
特性預覽:
runtime 支援預設原生分層編譯及優化特性;
支援 libSystem.IO.Ports.Native.so 串列埠庫 (通過龍芯Nuget源下載);
支援 libSkiaSharp.so、libHarfBuzzSharp.so 圖形庫 (通過龍芯Nuget源下載);
支援 SQLite 本地資料庫 (通過龍芯Nuget源下載);
支援 dotnet-sdk 各子模組單獨分包安裝,安裝方法請見.NET6安裝說明
龍芯Nuget源配置方法:
在龍芯Nuget源上,可以找到一些包含 LoongArch64 架構平臺相關檔案的 nupkg 包。 你需要修改本地 ~/.nuget/NuGet/Nuget.config 配置檔案,新增龍芯 Nuget 源,以支援相關 nupkg 包的下載。或者手動在龍芯 Nuget 源下載,解壓到本地 ~/.nuget/packages/ 對應目錄下使用。
$ cat ~/.nuget/NuGet/NuGet.Config
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<packageSources>
<add key="local" value="http://nuget.loongnix.cn:5000/v3/index.json" />
<add key="nuget.org" value="https://api.nuget.org/v3/index.json" protocolVersion="3" />
</packageSources>
</configuration>
龍芯.NET 6安裝方法
當前支援 dotnet-sdk 各子模組單獨分包安裝,各子模組如下:
- aspnetcore-runtime-6.0
- aspnetcore-targeting-pack-6.0
- dotnet-apphost-pack-6.0
- dotnet-host-6.0
- dotnet-hostfxr-6.0
- dotnet-runtime-6.0
- dotnet-runtime-deps-6.0
- dotnet-sdk-6.0
- dotnet-targeting-pack-6.0
- netstandard-targeting-pack-2.1
使用包管理器離線安裝/解除安裝
- 從 下載頁面 下載安裝包,請確認所使用的版本。
- 安裝/解除安裝:(以 dotnet-sdk-6.0.105-ea1 loongarch64 示例)
deb
離線安裝命令,需要注意安裝包順序
$ sudo apt install ./dotnet-host-6.0.5-ea1-loongarch64.deb \
./dotnet-hostfxr-6.0.5-ea1-loongarch64.deb \
./dotnet-runtime-deps-6.0.5-ea1-loongarch64.deb \
./dotnet-runtime-6.0.5-ea1-loongarch64.deb \
./dotnet-targeting-pack-6.0.5-ea1-loongarch64.deb \
./aspnetcore-targeting-pack-6.0.5-ea1-loongarch64.deb \
./dotnet-apphost-pack-6.0.5-ea1-loongarch64.deb \
./aspnetcore-runtime-6.0.5-ea1-loongarch64.deb \
./netstandard-targeting-pack-2.1_2.1.0-1_ea1-loongarch64.deb \
./dotnet-sdk-6.0.105-ea1-loongarch64.deb
# 解除安裝:
$ sudo apt remove dotnet-runtime-deps-6.0 \
dotnet-apphost-pack-6.0 \
dotnet-host \
dotnet-hostfxr-6.0 \
dotnet-runtime-6.0 \
dotnet-sdk-6.0 \
dotnet-targeting-pack-6.0 \
aspnetcore-runtime-6.0 \
aspnetcore-targeting-pack-6.0 \
netstandard-targeting-pack-2.1
rpm
# 離線安裝命令,需要注意安裝包順序 - Loongnix Server RPM
$ sudo yum install dotnet-host-6.0.5-ea1.loongarch64.rpm \
dotnet-hostfxr-6.0-6.0.5-ea1.loongarch64.rpm \
dotnet-runtime-deps-6.0-6.0.5-ea1.loongarch64.rpm \
dotnet-runtime-6.0-6.0.5-ea1.loongarch64.rpm \
dotnet-targeting-pack-6.0-6.0.5-ea1.loongarch64.rpm \
aspnetcore-targeting-pack-6.0-6.0.5-ea1.loongarch64.rpm \
dotnet-apphost-pack-6.0-6.0.5-ea1.loongarch64.rpm \
aspnetcore-runtime-6.0-6.0.5-ea1.loongarch64.rpm \
netstandard-targeting-pack-2.1-2.1.0-ea1.loongarch64.rpm \
dotnet-sdk-6.0-6.0.105-ea1.loongarch64.rpm
# 離線安裝命令,需要注意安裝包順序 - 麒麟v10 RPM
$ sudo yum install dotnet-host-6.0.5-ea1.a.ky10.loongarch64.rpm \
dotnet-hostfxr-6.0-6.0.5-ea1.a.ky10.loongarch64.rpm \
dotnet-runtime-deps-6.0-6.0.5-ea1.a.ky10.loongarch64.rpm \
dotnet-runtime-6.0-6.0.5-ea1.a.ky10.loongarch64.rpm \
dotnet-targeting-pack-6.0-6.0.5-ea1.a.ky10.loongarch64.rpm \
aspnetcore-targeting-pack-6.0-6.0.5-ea1.a.ky10.loongarch64.rpm \
dotnet-apphost-pack-6.0-6.0.5-ea1.a.ky10.loongarch64.rpm \
aspnetcore-runtime-6.0-6.0.5-ea1.a.ky10.loongarch64.rpm \
netstandard-targeting-pack-2.1-2.1.0-ea1.a.ky10.loongarch64.rpm \
dotnet-sdk-6.0-6.0.105-ea1.a.ky10.loongarch64.rpm
# 解除安裝:
$ sudo yum remove dotnet-runtime-deps-6.0 \
dotnet-apphost-pack-6.0 \
dotnet-host \
dotnet-hostfxr-6.0 \
dotnet-runtime-6.0 \
dotnet-sdk-6.0 \
dotnet-targeting-pack-6.0 \
aspnetcore-runtime-6.0 \
aspnetcore-targeting-pack-6.0 \
netstandard-targeting-pack-2.1
使用包管理器線上安裝/解除安裝
deb
# 線上安裝
$ sudo apt install dotnet-sdk-6.0
# 解除安裝:
$ sudo apt remove dotnet-runtime-deps-6.0 \
dotnet-apphost-pack-6.0 \
dotnet-host \
dotnet-hostfxr-6.0 \
dotnet-runtime-6.0 \
dotnet-sdk-6.0 \
dotnet-targeting-pack-6.0 \
aspnetcore-runtime-6.0 \
aspnetcore-targeting-pack-6.0 \
netstandard-targeting-pack-2.1
rpm
# 線上安裝
$ sudo yum install dotnet-sdk-6.0
# 解除安裝:
$ sudo yum remove dotnet-runtime-deps-6.0 \
dotnet-apphost-pack-6.0 \
dotnet-host \
dotnet-hostfxr-6.0 \
dotnet-runtime-6.0 \
dotnet-sdk-6.0 \
dotnet-targeting-pack-6.0 \
aspnetcore-runtime-6.0 \
aspnetcore-targeting-pack-6.0 \
netstandard-targeting-pack-2.1
檢視安裝結果
$ whereis dotnet
dotnet: /usr/bin/dotnet /usr/share/dotnet /usr/share/man/man1/dotnet.1.gz
檢視 .NET 版本
更多關於 .NET 的使用方法及示例,請參考 .NET線上文件
### 檢視SDK版本:
可使用終端檢視當前安裝的 .NET Core SDK 版本。 開啟終端並執行以下命令。
dotnet --list-sdks
檢視執行時版本:
可使用以下命令檢視當前安裝的 .NET Core 執行時版本。
dotnet --list-runtimes
詳細資訊:
可通過以下命令檢視 SDK 版本和執行時版本。 你還將獲得其他環境相關資訊,如作業系統版本和執行時識別符號 (RID)。
dotnet --info
龍芯LoongArch64版.NET版本釋出說明
上游社群倉庫從 .NET7 已原生支援 LoongArch64 架構,龍芯釋出的 LoongArch64 架構 SDK ,分兩種版本型別:
- 試用版: 其中安裝包名字中包含"ea"
- 例如龍芯基於上游社群 SDK 6.0.105 版本釋出的 LoongArch64 ea 版本 deb 安裝包名為: dotnet-sdk-6.0.105-ea1-loongarch64.deb
- 正式版: 穩定版本
- 例如龍芯基於上游社群 SDK 6.0.105 版本釋出的 LoongArch64 正式版本 deb 安裝包名為: dotnet-sdk-6.0.105-1-loongarch64.deb
如何在LoongArch平臺支援SkiaSharp?
由於SkiaSharp中包含平臺相關程式碼,所以引用SkiaSharp的專案需要引用LoongArch版本的nupkg,同時一般還需要引用HarfBuzzSharp包。
支援的方法有如下兩種。
配置龍芯Nuget源,新增包引用
參考龍芯Nuget源配置頁面新增龍芯nuget源的配置。 在專案配置檔案中新增對SkiaSharp和HarfBuzzSharp的引用,參考命令如下:
cd project-src # 進入到專案原始碼目錄中
dotnet add package SkiaSharp.NativeAssets.Linux --version 2.80.3
dotnet add package HarfBuzzSharp.NativeAssets.Linux --version 2.6.1
執行上述命令後,注意檢視shell是否有從nuget.loongnix.cn下載nupkg包的輸出,如下:
info : Adding PackageReference for package 'SkiaSharp.NativeAssets.Linux' into project '/data2/loongson/example/example.csproj'.
info : Restoring packages for /data2/loongson/example/example.csproj...
info : GET http://nuget.loongnix.cn:5000/v3/package/skiasharp.nativeassets.linux/index.json
info : OK http://nuget.loongnix.cn:5000/v3/package/skiasharp.nativeassets.linux/index.json 48ms
info : GET http://nuget.loongnix.cn:5000/v3/package/skiasharp.nativeassets.linux/2.80.3/skiasharp.nativeassets.linux.2.80.3.nupkg
info : OK http://nuget.loongnix.cn:5000/v3/package/skiasharp.nativeassets.linux/2.80.3/skiasharp.nativeassets.linux.2.80.3.nupkg 54ms
...
info : Adding PackageReference for package 'HarfBuzzSharp.NativeAssets.Linux' into project '/data2/loongson/example/example.csproj'.
info : Restoring packages for /data2/loongson/example/example.csproj...
info : GET http://nuget.loongnix.cn:5000/v3/package/harfbuzzsharp.nativeassets.linux/index.json
info : OK http://nuget.loongnix.cn:5000/v3/package/harfbuzzsharp.nativeassets.linux/index.json 405ms
info : GET https://api.nuget.org/v3-flatcontainer/harfbuzzsharp.nativeassets.linux/index.json
info : GET http://nuget.loongnix.cn:5000/v3/package/harfbuzzsharp.nativeassets.linux/2.6.1/harfbuzzsharp.nativeassets.linux.2.6.1.nupkg
info : OK http://nuget.loongnix.cn:5000/v3/package/harfbuzzsharp.nativeassets.linux/2.6.1/harfbuzzsharp.nativeassets.linux.2.6.1.nupkg 57ms
通過上述步驟即可完成。
手動下載,並複製到SDK目錄
如果需要執行從其它平臺(如x64)編譯好的專案,則建議到龍芯Nuget源手動下載SkiaSharp和HarfBuzzSharp nupkg包,解壓後將so檔案複製到SDK目錄下。
# 下載nupkg包
wget http://nuget.loongnix.cn:5000/v3/package/skiasharp.nativeassets.linux/2.80.3/skiasharp.nativeassets.linux.2.80.3.nupkg
wget http://nuget.loongnix.cn:5000/v3/package/harfbuzzsharp.nativeassets.linux/2.6.1/harfbuzzsharp.nativeassets.linux.2.6.1.nupkg
# 解壓
mkdir skiasharp harfbuzzsharp
unzip skiasharp.nativeassets.linux.2.80.3.nupkg -d skiasharp
unzip harfbuzzsharp.nativeassets.linux.2.6.1.nupkg -d harfbuzzsharp
# 以.NET 6.0.5預設路徑為例:
# 複製libSkiaSharp.so和libHarfBuzzSharp.so到SDK目錄下dotnet/shared/Microsoft.NETCore.App/6.0.5
sudo cp ./skiasharp/runtimes/linux-loongarch64/native/libSkiaSharp.so /usr/share/dotnet/shared/Microsoft.NETCore.App/6.0.5
sudo cp ./harfbuzzsharp/runtimes/linux-loongarch64/native/libHarfBuzzSharp.so /usr/share/dotnet/shared/Microsoft.NETCore.App/6.0.5