最近因為要佈署一些 基於 .Net8 的Web API 到 Raspberry Pi 3 上面跑,因為 .Net 8 AOT 無法在上面執行
所以還是得安裝 dotnet 8 runtime ,因為我不死心我直接把程式碼放上去編譯,我原本是在 x64 電腦編譯後放過去
結果無法執行起來即使我 chmod+x 也沒用,但是放上去 透過 dotnet publish 後發現
出現錯誤:
opt/dotnet/sdk/8.0.101/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.Sdk.FrameworkReferenceResolution.targets(90,5): error NETSDK1204: 目前的平台 'linux-arm' 不支援提前編譯。
[/home/pi/Desktop/PROJ2/WebApplication1.csproj]
主要就是因為在目前在 arm32 上面 看來似乎是不能用最後還是得透過 dotnet 來執行,因為我的 VS 2002 在 Release 的時候
都會失敗,所以基本上我都是透過在 command 去下指令,所以我就把程式碼直接放到 Raspberry Pi 3 下面進行發佈
這時候就必須要把 AOT 取消 ,編輯 專案檔的 PublishAot 改成 false
我希望他發佈到該目錄下的 Publish0118
指令:
dotnet publish -o:Publish0118之後我們修改一下 appsettings.json
{
"Kestrel": {
"EndPoints": {
"Http": {
"Url": "http://192.168.6.76:5999"
}
}
},
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning"
}
},
"AllowedHosts": "*"
}不然他預設會是 locolhost:5000 ,而且外部也找不到所以我直接指定他的 IP
執行指令:
dotnet ProjectName.dll執行結果:
-
本文原文首發於我的個人部落格:[.Net8]從AOT到dotnet publish:在Raspberry Pi 3上成功運行.NET 8 Web API的步驟
---
Yesterday I wrote down the code. I bet I could be your hero. I am a mighty little programmer.




