Windows 用 c# 编写的 IoT 控制台应用程序?

Windows IoT console application written in c#?

我正在尝试制作可以在 Raspberry PI 运行 Windows IoT 上使用网络摄像头拍照的应用程序。问题是我找不到控制台应用程序 template.Universal Windows 空白应用程序模板为我提供了 GUI,但我将从 python 脚本调用此应用程序,因此它应该没有. Windows IoT 项目提供后台任务模板,但输出是 .winmd 文件,我无法从 python 执行它。

使用 c# 在 Windows IoT 中创建简单的控制台应用程序的方法是什么? 谢谢

Console applications are supported in Windows IoT but apparently in C++ only. Perhaps you could try to create a solution that has a very simple C++ console application 仅处理与用户的交互加上一个包含所有逻辑和硬件相关代码的 C# class 库。

如果您仍然希望继续使用 C#,将应用程序创建为一个空白的通用 Windows 平台应用程序可能就足够了。)如果 UI 将不会实例化RPi2 在没有连接 HDMI 电缆的情况下启动 2。)您可能会发现使用随附的 UI 作为实时调试您的应用程序的方法很有用。

似乎适用于标准的 c# 控制台应用程序。我是怎么发现的? 我使用 Reflector 并检查了 Pi 上 c:\windows\system32 中的所有 exe 文件,其中一个是 .NET 程序集:netcmd.exe 当我在 Reflector 中查看 netcmd.exe 时,它说它是使用标准 .NET 4.5 构建的,这不是对的吗?但是我用框架 4.5 制作了一个标准的 c# 控制台应用程序,添加了这个:

class Program
{
    static void Main(string[] args)
    {
        Console.WriteLine("Hello world");
    }
}

将 test.exe 放在 Pi 上,瞧: C:>测试 你好世界

最奇怪的事情。

我没有测试过更多,但我想你会遇到未实现的 API 的麻烦,因为只有 .NET 的一个子集(与后台应用程序 (IoT) 相同?) Pi,因此您必须 "manually" 注意不要使用未实现的东西(或后台应用程序中的大部分代码 "mode",并且在最后阶段,移动到标准 .NET 4.5 并添加控制台代码)。

如果您将 Win 10 设备用于一个(或多个)不需要 GUI 的应用程序(例如,仅服务应用程序),您可以使用 headless选项。

本次启动没有完整 UI 并有额外的资源奖励。,但仍然可以通过网络访问。

显示设备的当前状态,使用 setbootoption 实用程序:

  [192.168.0.243]: PS C:\> setbootoption.exe

要修改设备状态以启用无头模式,请使用带有无头参数的 setbootoption 实用程序:

  [192.168.0.243]: PS C:\> setbootoption.exe headless
  [192.168.0.243]: PS C:\> shutdown /r /t 0

要修改设备状态以启用引导模式,请使用带有引导参数的 setbootoption 实用程序:

  [192.168.0.243]: PS C:\> setbootoption.exe headed
  [192.168.0.243]: PS C:\> shutdown /r /t 0

设备启动后黑屏

我能够在 Windows10 IoT 下创建 .NET 核心(在我的例子中是 3.1)控制台应用程序 运行ning:

  1. 创建 .net 核心控制台应用程序并将其发布到文件夹
  2. 使用 10.0...\c$
  3. 在 windows 资源管理器(或 ftp)中连接到设备
  4. 在 c:\program 中创建文件夹 files\dotnet
  5. 下载一个arm 32 dotnet core 运行时间(例如https://dotnet.microsoft.com/download/dotnet-core/thank-you/runtime-aspnetcore- 3.1.2-windows-arm32-binaries)(注意我使用了 raspberry pi 4)
  6. 在第 3 点的文件夹中解压
  7. 打开设备的 powershell 终端 (https://docs.microsoft.com/en-us/powershell/scripting/getting-started/getting-started-with-windows-powershell?view=powershell-7)
  8. 在 powershell 中将 dotnet 路径添加到路径环境变量:

$Env:Path += ";C:\Program Files\dotnet\"

  1. 检查 dotnet 是否可用:

dotnet --info

  1. 最终将您的应用程序输出(发布文件夹)复制到设备上
  2. 你应该可以 运行:

dotnet .\myapp.dll