![](/img/trans.png)
[英]win10 IoT FileOutputNodeAsync can't use mediaEncodingProfile
[英]Why can't I run a basic .NET Core application on a Win10 ARM system?
目前,我正在使用Windows 10 IoT核心版和新的.NET Core庫測試一些家庭自動化。 我已經使用Windows 10 IoT核心版(10.0.10586)的最新穩定版本設置了香草Rasberry PI 2。 我還使用dnvm安裝了當前最新的(RC2-20221).NET軟件包, dnvm list
顯示:
Active Version Runtime Architecture OperatingSystem Alias
------ ------- ------- ------------ --------------- -----
1.0.0-rc1-final clr x86 win
1.0.0-rc1-final coreclr arm win
1.0.0-rc1-final coreclr x64 win
1.0.0-rc1-final coreclr x86 win
1.0.0-rc1-update2 clr x86 win default, dnx-clr-win-x86.1.0.0-rc1-update2
1.0.0-rc2-20221 clr x64 win
1.0.0-rc2-20221 clr x86 win
1.0.0-rc2-20221 coreclr arm win
* 1.0.0-rc2-20221 coreclr x64 win
1.0.0-rc2-20221 coreclr x86 win
然后,我創建了一個新的控制台應用程序(.NET Core),除了打印字符串外,它只做其他事情:
public class Program
{
public static void Main(string[] args)
{
System.Console.WriteLine($"Hello Raspberry {Math.PI}!");
}
}
我還更新了project.json文件,從其中刪除了“ Microsoft.NETCore.App”依賴項的"type": "platform"
-屬性。 因此,我明確添加了兩個運行時:
{
"version": "1.0.0-*",
"buildOptions": {
"emitEntryPoint": true
},
"dependencies": {
"Microsoft.NETCore.App": {
"version": "1.0.0"
}
},
"frameworks": {
"netcoreapp1.0": {
"imports": "dnxcore50"
}
},
"runtimes": {
"win10-x64": {},
"win10-arm": {}
}
}
第一個運行時( win10-x64
)用於測試開發計算機上的應用程序,后一個用於部署。 我可以使用以下命令成功構建我的應用程序:
dotnet publish --output "X:\Dev\IoT\Samples\Console\output" --runtime win10-arm
在命令行中使用運行時參數win10-x64
構建項目可以按預期工作:我得到了功能齊全的可執行文件,該命令將所需的字符串打印到控制台。 在將win10-arm
-build部署到我的Rasberry PI之后,嘗試從powershell執行應用程序給了我迄今為止所遇到的最奇怪的錯誤:
Program 'IoT.Samples.Console.exe' failed to run: The operation completed successfully. + CategoryInfo : ResourceUnavailable: (:) [], ApplicationFailedException + FullyQualifiedErrorId : NativeCommandFailed
因此程序無法運行,因為...好吧...成功了嗎?
我按照此處的說明使用Powershell連接到RaspPI。 而且,正如預期的那樣,無法從我的x64機器上運行ARM版本。 因此,顯然可以正確地為ARM編譯應用程序。
那么,為什么Powershell會以錯誤響應? 這個錯誤告訴我什么?
提前致謝!
我使用Raspberry Pi3在Windows 10 IoT核心版RTM 10.0.14393.576上運行。
問題是您必須使用CoreCLR中提供的CoreRun.exe工具啟動.NET Core應用程序。
首先,您必須構建CoreCLR並將其部署到Windows 10 IoT核心版。
build.cmd release arm
。 這將使用Release配置構建ARM的源。 在我的機器上,構建大約需要半小時。 bin\\Product\\Windows_NT.arm.Release
目錄中。 將整個目錄復制到Windows 10 IoT核心版(例如,復制到C:\\netcore\\coreclr
)。 現在,您必須將.NET Core應用程序部署到Windows 10 IoT核心版設備:
win10-arm
運行時。 "type": "platform"
屬性。 dotnet restore
dotnet publish -c Release -r win10-arm
(如果需要調試配置,則為-c Debug
) bin\\Release\\netcoreapp1.0\\win10-arm\\publish
目錄中。 將此目錄復制到Windows 10 IoT核心版(例如,復制到C:\\netcore\\apps\\MyApp
)。 現在,您只需使用CoreRun.exe工具運行您的應用程序。 最重要的是, 您必須指定DLL文件,而不是EXE文件 。
C:\netcore\coreclr\CoreRun.exe "C:\netcore\apps\MyApp\MyApp.dll"
根據https://blogs.msdn.microsoft.com/dotnet/2016/07/15/net-core-roadmap/,我們將在2016年第四季度或2017年第一季度獲得ARM32 / 64支持
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.