النشر عن بعد وتصحيح تطبيقات dotnet الأساسية على * nix

مقدمة


بحل مهمة أولية إلى حد ما وعدم إتقان شروط تطوير 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 مع الأدوات الخارجية عبر المهام

Source: https://habr.com/ru/post/ar422141/


All Articles