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

本文关键字:IoT 控制台 应用程序 Windows | 更新日期: 2023-09-27 18:12:43

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

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

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

控制台应用程序在Windows IoT中受支持,但显然仅在C++中受支持。也许你可以尝试创建一个解决方案,它有一个非常简单的C++控制台应用程序,只处理与用户的交互,再加上一个包含所有逻辑和硬件相关代码的C#类库。

似乎可以使用标准的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上,所以您必须"手动"注意不要使用未实现的东西(或者在后台应用程序"模式"中编写大多数代码,在最后阶段,转到标准的.NET 4.5并添加控制台代码(。

如果您仍然希望继续使用C#,那么将应用程序创建为空白的通用Windows平台应用程序就足够了。1(如果RPi2在没有连接HDMI电缆的情况下通电,则UI将不会实例化。2(您可能会发现将附带的UI用作实时调试应用程序的手段很有用。

如果您将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

要修改设备的状态以启用headed模式,请使用带有headed arg:的setbootoption实用程序

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

设备将以黑屏启动

我能够创建在Windows 10 IoT:下运行的.NET核心(在我的情况下是3.1(控制台应用程序

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

$Env:Path++";C:''Program Files''dotnet''">

  1. Check dotnet可用于:

dotnet--信息

  1. 最后在设备上复制应用程序输出(发布文件夹(
  2. 您应该能够运行:

dotnet。''myapp.dll