В настоящее время я тестирую домашнюю автоматизацию с использованием Windows 10 IoT Core и новых библиотек .NET Core. Я установил ванильный Rasberry PI 2 с последней стабильной версией Windows 10 IoT Core (10.0.10586). Я также установил самые последние пакеты .NET (RC2-20221) с помощью dnvm, 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, из которого удалил свойство "type": "platform"
зависимости "Microsoft.NETCore.App". Поэтому я явно добавил две среды выполнения:
{
"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
на моем Rasberry PI попытка выполнить приложение из powershell дает мне самую странную ошибку, с которой я когда-либо сталкивался:
Program 'IoT.Samples.Console.exe' failed to run: The operation completed successfully. + CategoryInfo : ResourceUnavailable: (:) [], ApplicationFailedException + FullyQualifiedErrorId : NativeCommandFailed
Итак, программа не запускается, потому что... ну... успех?
Я следовал инструкциям здесь для подключения к RaspPI с помощью PowerShell. Кроме того, как и ожидалось, запуск сборки ARM с моей x64-машины не работает. Таким образом, очевидно, что приложение правильно скомпилировано для ARM.
Так почему же powershell отвечает ошибкой? И что мне эта ошибка говорит?
Заранее спасибо!