目录

介绍

背景

工具选择

先决条件

准备SD卡

SSH配置和.NET安装

示例程序

兴趣点


  • 带有最新代码的GitHub存储库

介绍

手动设置了用于.NET Core和远程调试的Raspberry Pis之后,我想要一个更简单,更自动化的解决方案。这样做的好处是:

  • 更轻松、更省时
  • 更少的错误倾向
  • 更容易跟上Raspbian的新版本
  • Headless ——即无需显示器、键盘或鼠标。

背景

关于该主题还有很多其他文章,对我来说可能最有用的是Scott Hanselman的这篇文章。但是,它们都需要大量的手动设置。我想要一个尽可能自动化的解决方案。显然,需要进行一些手动干预,因为您必须物理地移动SD卡,给设备加电等,但是除此之外,我的目的是运行脚本,然后设置就会发生。正如Scott Hanselman所说:

引用:

好的(有点开玩笑,但不是真的)是程序员的经验法则——如果您执行两次操作,请使其自动化

我希望安装程序能够实现以下目标:

  • 从开发机上新格式化的SD卡开始
  • 将卡配置为在传输到Raspberry Pi时允许远程ssh
  • 配置Raspberry Pi以实现安全的无密码ssh连接
  • 安装.NET Core和VS远程调试器

最后,我将添加几个C#项目来演示所有工作。

工具选择

我已经使用VS Code几年了,并且真的很喜欢它——这就是我决定使用的方式(几十年来我也使用过各种版本的Visual Studio——但是我不会在这里详细介绍它们的优点和缺点。:))

我也非常喜欢Powershell,但决定将Bash用于脚本。希望这将使其尽可能成为跨平台的。您将需要配置VS Code以将bash作为默认外壳程序——最简单的方法是按Ctrl + Shift + P并键入default shell。这将提供命令提示符,Powershell或各种Linux版本的选项。最适合我的人是Git Bash但其他的也应该工作。

先决条件

VS Code解决方案可以复制到开发计算机上的任何位置。在Visual Studio Code中打开它时,请使用“文件菜单中的“打开文件夹”。

您将需要一种将Raspbian镜像放入SD卡的方法。我会推荐Raspberry Pi Imager。您不必先下载镜像,但我认为这是值得做的,因为否则,您可能会发现自己使用了大量的Internet带宽(即使压缩后,镜像的大小也往往为GB)。可通过镜像列表上的“使用自定义来访问下载的镜像。

您将需要一个Wifi路由器,并且需要知道SSID和PSK。我认为你有那些:)。而且显然是Raspberry Pi和电源。我在Raspberry Pi 3上进行了测试,但是从V2起的任何版本都可以。请注意,这不会对Raspberry Pi Zero工作,因为它使用是.NET Core不支持的ARMv6。如果您的Raspberry Pi没有内置Wifi,则还需要USB Wifi加密狗。

最后,您将需要下载.NET core SDK的最新版本。在撰写本文时,版本为3.1。这应该复制到PiFiles文件夹。您将需要ARM32版本,并且应该期望它的大小超过100MB。

准备SD卡

一旦有了新刷新的SD卡,在将其插入Raspberry Pi之前,需要一些额外的配置。这是任务1和2。要运行任务,请按Ctrl + Shift + P并选择“任务:运行任务。您应该看到如下任务列表:

选择任务1.设置Wifi设置...这将要求您输入Wifi SSID和PSK。输入它们时,它们将存储在settings.json中,因此您无需再次输入它们。

然后选择任务2.修改SD卡以进行SSH访问...这将要求您提供带有SD卡的驱动器。因为这将在bash脚本中访问,所以它可能类似于/d/mnt/d。如果您刚刚对卡进行了镜像,则可能需要重新插入它,因为镜像程序会在完成后将其弹出。运行任务2后,应弹出卡并将其插入Raspberry Pi。打开Raspberry Pi的电源,等待其启动,然后再进行下一步。

SSH配置和.NET安装

下一步是运行任务3.设置Raspberry Pi Name。这会将主机名从默认的raspberrypi更改为您选择的名称。还会询问您是否要设置静态IP地址。如果您不希望使用静态IP,请将其留空。我在Windows 10和本地主机名查找(mDNS)方面的经验是非常少的——我不确定它是否是可用的。但是,即使您根本无法使用本地名称解析,也应该可以使用IP地址。和以前一样,这些设置会记住在settings.json中,因此您不必重新输入它们。

设置好新名称后,任务4. 将公共SSH密钥添加到Raspberry Pi将重新配置Raspberry Pi并将公共SSH密钥复制到它,这样当您(或VS工具)通过SSH连接时就不必输入密码了。系统将询问您是否要连接(键入yes),然后输入raspberry pi密码(键入raspberry)。此时,Raspberry Pi将重新启动,因此您需要等待,然后再运行下一步。如果尚未设置ssh密钥,则类似这样的文章将向您展示如何创建一个。现在,您将能够登录,而不需要输入密码,但只有从您的机器。

任务5. Raspberry Pi Dotnet安装将在Raspberry Pi上安装 .NET核心SDK和VS调试器。这将需要一段时间,但是一旦完成,我们现在就可以在Raspberry Pi本身上或在我们的主要开发机器上远程编写.NET程序——显然,远程编写会变得更加有趣!

示例程序

我创建了两个示例程序。第一个是Hello World项目。这将在本地(即在开发计算机上)和远程运行。运行它的最简单方法是选择左侧的运行图标,然后从下拉列表中选择配置:

现在,您应该能够像在本地一样设置断点并进行调试:

为了运行Blink程序,您需要将LED连接到GPIO引脚之一。Blink程序使用出色的System.Device.Gpio库,应使用NuGet自动安装该库。

兴趣点

这就是本文的内容。使用Python编写blink程序可能会容易得多,但是对我来说,使用c#的全部意义在于,您可以使用.NET创建更大、更可维护的解决方案(尽管我敢肯定有些人会不同意这一点)。话虽如此,本文中的演示程序并非旨在用作更大程序的模板。

在Raspberry Pi上轻松设置.NET Core并使用VS Code进行远程调试相关推荐

  1. 在Raspberry Pi上设置Docker的简单方法

    by Ryan Gordon 通过瑞安·戈登(Ryan Gordon) 在Raspberry Pi上设置Docker的简单方法 (The easy way to set up Docker on a ...

  2. 如何在5美元的Raspberry Pi上构建个人开发服务器

    In this article, you'll learn how to build a personal dev server by installing Git, Node.js, Rust, a ...

  3. raspberry pi_如何在Raspberry Pi上使用LÖVE游戏引擎对游戏进行编程

    raspberry pi Raspberry Pi以向孩子介绍开源软件和编程而闻名. Pi是负担得起的,实用的专业级计算入门,伪装成可破解的乐趣. Mitch Resnick's Scratch (最 ...

  4. raspberry pi_在Raspberry Pi上试用Docker

    raspberry pi 在Opensource.com上,我可以在日常工作中了解很多非常有趣的新兴技术. 但是我并不总是可以自己深入研究它们. 在过去的这个周末,我留出了一些时间来做. 几年来,我一 ...

  5. 使用 Raspberry Pi 和 CUPS 设置打印服务器

    使用 Raspberry Pi 和 CUPS 设置打印服务器 拥有打印服务器具有多种优势.打印服务器可以通过有线或无线方式将多台计算机连接到一台或多台打印机,您可以使用多个设备访问您的打印机,并且可以 ...

  6. 在Raspberry Pi上安装HDMI-CEC

    转自https://www.labno3.com/2021/02/01/using-hdmi-cec-on-a-raspberry-pi/ HDMI-CEC是一种特殊的协议,用于电视与另一个设备通过H ...

  7. raspberry pi_如何在Raspberry Pi上使用NetBSD

    raspberry pi 您是否有旧的Raspberry Pi散布着灰尘,也许是在最近的Pi升级之后? 您对BSD Unix感到好奇吗? 如果您对这两个问题都回答"是",您将很高兴 ...

  8. raspberry pi_如何在Raspberry Pi上创建盒装Internet

    raspberry pi 如果您是家庭学校的父母或预算有限的老师,那么框选式Internet可能正是您想要的. 它的硬件要求非常适中(Raspberry Pi 3.64GB microSD卡和电源), ...

  9. 树莓派支持uvi协议吗_树莓派如何控制电视机,在Raspberry Pi上安装HDMI-CEC

    在本教程中,我将展示如何使用HDMI-CEC和树莓派来控制电视. HDMI-CEC是一种特殊的协议,用于电视与另一个设备通过HDMI电缆进行通信.该协议允许电视控制另一个设备,同时也允许该设备控制电视 ...

最新文章

  1. linux shell 显示文件最后几行
  2. HDFS文件系统基本文件命令、编程读写HDFS
  3. 0x00007FFEBAD050D8 处(位于 first.exe 中)有未经处理的异常: Microsoft C++ 异常: cv::Exception,位于内存位置 0x0000000DD73CE
  4. idea好用插件及常用开发小工具、文本编辑器(替代notepad++)合集
  5. 安全管家安卓_手机管家和顽固木马专杀哪个更好用
  6. mysql有没有开窗函数_mysql实现开窗函数
  7. linpack学习记录
  8. 计算机桌面图标管理,桌面图标管理|轻松管理桌面图标
  9. 不经历风雨怎么见彩虹
  10. Web服务器群集——Nginx企业级优化
  11. MATLAB面向对象_及_AppDesigner使用
  12. 【C++ 二分函数——lower_bound upper_bound用法】
  13. 什么从什么写短句_什么是什么,能什么写句子补充完整
  14. Markdown编辑器使用方法
  15. 51单片机 11.0592MHz 产生115200 波特率
  16. EssentialC++第四章总结+课后习题+踩雷清单
  17. Galaxy Note 通过Kies升级,固件存放目录在哪里?
  18. 关于《梦回水浒》的几个问题释疑
  19. 多读多写是提高写作水平的重要保证
  20. PPT总做不好?其实只要掌握这个万能的SmartArt功能就可以了!

热门文章

  1. 辰皇怎么过鸿蒙,诛仙3最厉害的职业是什么 强弱对应原因解析
  2. win10搭建java开发环境_如何在WIN10搭建Java开发环境
  3. python 拟合圆心_OpenCV:将单个圆拟合到图像(在Python中)
  4. batchplot3.5.9如何使用_VirtualBox中安装的Windows XP如何使用USB3.0
  5. thymeleaf的能用在什么地方_上古文明真相研究系列:天圆地方和南辕北辙
  6. 加载geojson面数据_地理数据可视化
  7. 高清简约家居环境场景设计样机模板素材,还原现场!
  8. 电商视觉:焦点图的万能构图模板
  9. ithoughts怎么自定义样式_微信小程序自定义导航栏组件封装
  10. 如何使用模板生成多个页面_Divi不再只是页面构建器。 使用主题生成器,可以完全设计整个网站。...