مقدمة
بحل مهمة أولية إلى حد ما وعدم إتقان شروط تطوير Spartan لـ ESP8266 ، قررت العودة إلى عالم .Net المريح الذي يوجد فيه الإكمال التلقائي وتصحيح الأخطاء.
لذا لدينا:
- جهاز كمبيوتر يعمل بنظام Windows 10 Pro Build 1803 (ومع ذلك ، يمكن تقريبًا تنفيذ كل شيء مكتوب أدناه على * nix بأقل قدر من التغييرات)
- تثبيت Orange Pi Zero مع خادم Raspbian
- الرغبة في كتابة كود في C # وتصحيحه على الجهاز فقط بالضغط على F5
إعداد البيئة
مطور كمبيوتر
سيتم إجراء التطوير في Visual Studio Code باستخدام ملحق C#
المثبت.
يلزم وجود .NET Core SDK مثبت.
من المستحسن أيضًا أن يكون لديك إصدار من Windows 10 1803 ، حيث يتم تثبيت OpenSSH بشكل افتراضي فيه. في الإصدارات السابقة من Windows 10 ، يمكن تثبيت OpenSSH من خلال إدارة الوظائف الإضافية. ومع ذلك ، في الوقت نفسه ، لا شيء يمنع استخدام عملاء SSH من جهات خارجية.
الجهاز المستهدف
تحضير
بادئ ذي بدء ، تحتاج إلى تكوين الوصول إلى مفتاح SSH. التعليمات الممتازة من Digital Ocean تساعد بشكل مثالي في ذلك.
* ملاحظة:
يمكن تخزين المفاتيح الخاصة كملفات منفصلة في مجلد .ssh ، لكنني أوصي باستخدام مجموعة ملائمة جدًا من KeePass + KeeAgent . يوفر KeePass تخزينًا آمنًا للمفاتيح ، ويوفر KeeAgent المفاتيح. لكي يعمل مع عميل Windows SSH المدمج ، يجب عليك تنشيط الإعداد التجريبي المقابل. *
قم بتثبيت .NET Core SDK
نظرًا لأن مستودع Microsoft الرسمي لا يحتوي على حزم تم تجميعها لـ ARM32 ، يجب عليك تثبيت .NET Core SDK يدويًا.
بادئ ذي بدء ، نحتاج إلى تثبيت التبعيات المدرجة في الوثائق .
apt-get install liblttng-ust0 libcurl3 libssl1.0.0 libkrb5-3 zlib1g libicu52 gettext
الآن يمكنك تثبيت SDK.
يمكنك أن تأخذ رابطًا مباشرًا إلى الأرشيف من SDK من صفحة SDK على GitHub .
curl -sSL -o dotnet.tar.gz https://dotnetcli.blob.core.windows.net/dotnet/Sdk/release/2.1.401/dotnet-sdk-latest-linux-arm.tar.gz sudo mkdir -p /opt/dotnet && sudo tar zxf dotnet.tar.gz -C /opt/dotnet sudo ln -s /opt/dotnet/dotnet /usr/local/bin
تثبيت المصحح البعيد
يستخدم البرنامج النصي لتثبيت مصحح الأخطاء عن بُعد unzip
:
sudo apt-get install unzip
لتثبيت المصحح البعيد ، قم بتشغيل الأمر التالي:
curl -sSL https://aka.ms/getvsdbgsh | bash /dev/stdin -r linux-arm -v latest -l ~/vsdbg
تكوين VS Core للنشر والتصحيح عن بُعد على لينكس
1. إنشاء مشروع
كل شيء بسيط للغاية هنا:
mkdir DemoProject cd DemoProject dotnet new console
2. إنشاء ملفات التكوين
افتح المجلد مع المشروع. سيقوم ملحق C # بتنزيل حزم OmniSharp و .NET Core Debuger تلقائيًا إذا لم يتم ذلك من قبل. بعد ذلك ، سيُطلب منا إنشاء أصول لبناء المشروع وتصحيحه. نحن متفقون على ذلك. نتيجة لذلك ، .vscode
مجلد .vscode
مع launch.json
. tasks.json
و launch.json
. تصف هذه الملفات المهام التي يمكنك القيام بها وتكوينات بدء التشغيل. بشكل افتراضي ، يتم إنشاء تكوين تشغيل التصحيح ، بناءً على مهمة البناء.
3. تحرير ملفات التكوين
تتمثل الفكرة الرئيسية في البدء والتصحيح على جهاز بعيد في إنشاء مهام تجمع المشروع وتنسخه إلى الجهاز وتكوين التشغيل باستخدام مصحح الأخطاء عن بُعد.
سأقدم وصفًا للمهام المنتهية:
{ "version": "2.0.0", "tasks": [ { "label": "publish", "command": "dotnet", "type": "process", "args": [ "publish", "${workspaceFolder}/DemoProject.csproj" ] }, { "label": "copy-to-device", "dependsOn": "publish", "command": "scp", "type": "process", "args": [ "-r", "-v", "${workspaceFolder}/bin/Debug/netcoreapp2.1/publish/.", "<target_user>@<target_ip>:~/DemoProject/" ] }, ] }
تستدعي مهمة dotnet publish
أمر dotnet publish
، الذي يحزم التطبيق وتبعياته في مجلد للنشر.
يستخدم الأمر copy-to-device
scp
لنسخ التطبيق المنشور إلى الجهاز البعيد. انتبه إلى النقطة الموجودة في نهاية المسار الذي يتم النسخ منه. إذا لم تحدده ، فسيتم وضع مجلد publish
في DemoProject
في DemoProject
، ولن يتم استبداله. تشير المعلمة dependsOn
إلى أن copy-to-device
يعتمد على publish
. وبالتالي ، قبل تشغيل copy-to-device
سيتم تنفيذ publish
.
بعد ذلك ، تحتاج إلى تكوين تكوين بدء التشغيل وتصحيح الأخطاء عن بُعد:
{ "version": "0.2.0", "configurations": [ { "name": ".NET Core Launch (console)", "type": "coreclr", "request": "launch", "preLaunchTask": "copy-to-device", "program": "~/DemoProject/DemoProject.dll", "args": [], "cwd": "~/DemoProject", "console": "internalConsole", "stopAtEntry": false, "internalConsoleOptions": "openOnSessionStart", "pipeTransport": { "pipeCwd": "${workspaceRoot}", "pipeProgram": "ssh", "pipeArgs": [ "-T", "<target_user>@<target_ip>" ], "debuggerPath": "~/vsdbg/vsdbg", "quoteArgs": true } } ,] }
تشير "preLaunchTask": "copy-to-device"
إلى أنه يجب عليك إكمال مهمة copy-to-device
قبل بدء جلسة تصحيح الأخطاء. وبالتالي ، في كل مرة قبل تصحيح الأخطاء ، سيتم نشر المشروع ونسخه إلى الجهاز المستهدف.
تسمح لك المعلمة pipeTransport
بتكوين استخدام مصحح أخطاء عن بُعد. في هذه الحالة ، ssh
استخدام ssh
كبرنامج يوفر النقل ، ولكن لا شيء يمنع plink.exe
من putty
برامج putty
.
4. التصحيح
بعد الضغط على F5 ، يتم إنشاء المشروع ، ويتم نسخ المشروع ، ويتم تشغيل التطبيق على الجهاز البعيد. التصحيح مطابق تمامًا للحالة المحلية.
ملحوظة:
بعد إنهاء التطبيق ، في كل مرة أتلقى فيها Error from pipe program 'ssh': Process is terminating due to StackOverflowException
رسالة Error from pipe program 'ssh': Process is terminating due to StackOverflowException
. إذا حكمنا من خلال المشكلة المفتوحة على GitHub ، فهذه مشكلة مصحح أخطاء معروفة. ولكن نظرًا لحدوث الخطأ بعد اكتمال التصحيح ، يمكنك تجاهل ذلك
الموارد المستخدمة
→ إعداد Raspian و .NET Core 2.0 على Raspberry Pi
← Omnisharp-vscode تصحيح الأخطاء عن بُعد على ذراع Linux
→ تعليمات أوامر نشر dotnet
← تكوين launch.json لتصحيح أخطاء C #
→ تكامل Visual Studio Code مع الأدوات الخارجية عبر المهام