用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中创建简单控制台应用程序的方法是什么?感谢
控制台应用程序在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(控制台应用程序
- 创建一个.net核心控制台应用程序并将其发布到文件夹
- 使用10.0…''c连接到windows资源管理器(或ftp(中的设备$
- 在c:''program files''dotnet中创建文件夹
- 下载arm 32 dotnet核心运行时(例如https://dotnet.microsoft.com/download/dotnet-core/thank-you/runtime-aspnetcore-3.1.2-窗口-arm32-binary((注意我使用了树莓pi 4(
- 在第3点打开文件夹中的包装
- 打开powershell终端到设备(https://learn.microsoft.com/en-us/powershell/scripting/getting-started/getting-started-with-windows-powershell?view=powershell-7(
- 在powershell中,将dotnet路径添加到路径env变量:
$Env:Path++";C:''Program Files''dotnet''">
- Check dotnet可用于:
dotnet--信息
- 最后在设备上复制应用程序输出(发布文件夹(
- 您应该能够运行:
dotnet。''myapp.dll