VScode és PlatformIO és C#

Fórumok

Használ valaki ilyen kombót?
A minap felcsaptam rá az ESP32 - Arduino platformot. A blink működött így felcsaptam egy másik példa programot - három relét kapcsolgat. Nem tudom elszúrtam vagy sem, de nem mindig sikerült a megfelelő "projektet" forgatni - belemódosítottam a három relés programba egy negyedik relét és gondosan lefordította a blink -et sőt sikeresen feltöltötte a chip -re.

Azon gondolkodom, hogy ez így nem megbízható (lehet bennem van a hiba) de mi lesz, ha mondjuk felakarom telepíteni az IDF platformot? Mi lesz ha mondjuk STM8 -al akarok dolgozni? Egy rossz kattintás és letöltöm az ESP32 -be az STM8 -as kódot?

Használ "egyidejűleg" több platformot valaki? Mi a titka?

Hozzászólások

codium + platformio (ESP/IDF es Arduino)

Nekem valahogy a tobb projekt egyideju kezelese se tunik ertelmesnek...

De neha meg a platformio home se nyilik meg egy-egy frissites utan.

Igen. Az "egyidejű" nem a helyes kifejezés, valahogy úgy gondolom, hogy a több platform beállítás tud e együtt létezni, ha váltani kell.
(Egyébként simán el tudom képzelni, hogy a Raspberry PI -hez készítek valamit ami i2c -n kommunikál és a slave oldalt is én csinálom)

* Én egy indián vagyok. Minden indián hazudik.

Szerkesztve: 2022. 11. 20., v – 18:06

Hozzál létre egy könyvtárat, és lépj bele. Pl.:

mkdir multiple-vscode-instance
cd multiple-vscode-instance

Ebben a könyvtárban hozzál létre 3 könyvtárat. Pl.:

mkdir extensions
mkdir user-data
mkdir my-project

Lépj bele a my-project könyvtárba

cd my-project

Futtast a VSCode-ot így:

code --extensions-dir ..\extensions --user-data-dir ..\user-data .

Így a VSCode saját alap kiterjesztésekkel és beállításokkal indul. De variálhatod is. User Data az legyen minden VSCode-hoz egységes, akkor ne használd a --user-data-dir paramétert.

Ha jól értem, akkor minden "projektre" (amely fogalmilag sincs a vscode -ban) hozzak létre egy külön könyvtárat?

Vagyis minden projekt kap egy saját "my_project" könyvtárat és abból indítsam a vscode -ot?
Valahogy így:
extensions/
user-data/
stm8_ammeter_project/
stm8_display_project/
ESP32_connect_project/
stb.

Érdekes. A PlatformIO is egy "extennsion". Belefér ebbe a felállásba?
Elindíthatok egyszerre több vscode instance -t különböző "project" mappákból? (Persze a "debugger" mint fizikai eszköz egyszerre csak egy project alatt működhet)
 

* Én egy indián vagyok. Minden indián hazudik.

Nem így gondoltam, de tényleg rossz a példa. Így a korrekt, és így minden projektednek van saját extensions és user-data könyvtára. 

stm8_ammeter_project:

mkdir stm8_ammeter_project
cd stm8_ammeter_project
mkdir extensions
mkdir user-data
mkdir src
cd src
code --extensions-dir ..\extensions --user-data-dir ..\user-data .

ESP32_connect_project:

mkdir ESP32_connect_project
cd ESP32_connect_project
mkdir extensions
mkdir user-data
mkdir src
cd src
code --extensions-dir ..\extensions --user-data-dir ..\user-data .

Ez mindentől független megoldás. Ezzel a megoldással a VSCode úgy indul el mintha most telepítetted volna elsőként. Ezért amikor így indítod, akkor minden kiterjesztés és beállítás projektenként lesz szeparálva. A PlatformIO is csak egy kiterjesztés, ezért az is egyedi lesz minden projektnél.

Nagyon jól hangzik!

Talán erre is tudod a választ, amikor felraktam a PlatformIO -t akkor a VSCode "belsejéből" mint kiterjesztést telepítettem. Viszont a PlatformIO dokumentációban a parancssori telepítést javasolják, te mit javasolsz/használsz?

A másik érdekes kérdés, hogy vajon más-más könyvtárból futtatva lehet egyszerre több instance VSCode?

* Én egy indián vagyok. Minden indián hazudik.

De nem kötelező minden projekthez külön extensions és user-data. Én különösen utáltam hogy sok extension ott van minden projektben. Ezért én így használom:

VSCode könyvtárak

C#

~/.vsc/csharp/e
~/.vsc/csharp/ud

SCSS és HTML

~/.vsc/design/e
~/.vsc/design/ud

esp8266

~/.vsc/esp8266/e
~/.vsc/esp8266/ud

A projektet pedig így tárolom és indítom

cd ~/github/csharppojekt1
# a projekt könyvtárban pedig van egy code.sh vagy code.bat ami így indul:
code --extensions-dir ~/.vsc/csharp/e --user-data-dir ~/.vsc/csharp/ud .

Vagy a esp lámpa projektem így

cd ~/github/lámpaprojekt6
# a projekt könyvtárban pedig van egy code.sh vagy code.bat ami így indul:
code --extensions-dir ~/.vsc/esp8266/e --user-data-dir ~/.vsc/esp8266/ud .

A könyvtárstruktúra, mindenki olyat csinál amilyet akar, de mint láthatod, komplexebben is használható.

Még egy nagyon fontos dolog, mert így indítva a VSCodeot, nem tudja rendesen szinkronizálni a kiterjesztéseket. Ezért a .vscode könyvtárban nekem van egy extensions.json fájl, amiben az adott projekthez tartozó kiterjesztés ajánlás van felsorolva:

{
  "recommendations": [
    "ext1.xxx",
    "ext.2yyy",
    "etc.ext"
  ]
}

Ez most kicsit összezavart.
Most hogy szépen kialakítottál minden projekthez egy szép, egyedi könyvtár struktúrát, így elérted hogy a különféle platformok és projektek szigorúan elváljanak egymástól és ne zavarhassanak be, mégis beraksz egy a "javasolt" kiterjesztés listát?
Ha váltasz a projektek közt módosítod ezt a fájlt?

Egyébként is mit jelent az hogy "nem tudja rendesen szinkronizálni a kiterjesztéseket"? Projektek között? Hiszen így minden projekt (lehet egyforma platform) saját kiterjesztésekkel dolgozik vagy mégisvan globális?

Bocs hogy ennyit kérdezek, de a dokumentáció kicsit zavaros és mint jeleztem nem feltétlenül úgy működik ahogy az ember várná/gondolná. Többen is feltették az ilyen kérdéseket, amire az volt válasz, hogy az adott "projekt" könyvtáron belül ha megnyitunk egy fájlt arra fog ráállni, az ahhoz tartozó beállítások érvényesülnek a következő build(/burn/debug) folyamán.

Másik kicsit zavaros, most akkor te a git -be (felhőbe) dolgozol?
Jó dolog, viszont én régi motoros vagyok csak abban bízom ami a kezemben van - a munkahelyemen elvárják hogy mindent a céges felhőbe rakjak, de háztájiban a saját szerverkémre hagyatkozom.

* Én egy indián vagyok. Minden indián hazudik.

Most hogy szépen kialakítottál minden projekthez egy szép, egyedi könyvtár struktúrát, így elérted hogy a különféle platformok és projektek szigorúan elváljanak egymástól és ne zavarhassanak be, mégis beraksz egy a "javasolt" kiterjesztés listát?

Nálam nem minden projektnek van saját struktúrája, hanem projekt forrás szintű a struktúra. Minden ami C# fejlesztés az használ egyet, minden ami dizájn az egy másikat. Mindenek nyelvnek van sajátja.

A javaslat azért van, kell, mert több gépen dolgozok, több OS, és van hogy cserélgetem, resetelem a rendszert, újra teleítem. Így az ajánlás tudja mit kell telepíteni, nem kell foglalkoznom vele, mert van ez a fícsör, és használom kényelmi szempontból. De amikor egy másik munkatárs el kezd dolgozni, akkor nála is megjelenik hogy ezt kell a projekthez. Ez csak egyszer jelenik meg. 

Egyébként is mit jelent az hogy "nem tudja rendesen szinkronizálni a kiterjesztéseket"? Projektek között? Hiszen így minden projekt (lehet egyforma platform) saját kiterjesztésekkel dolgozik vagy mégisvan globális?

A VSCode minden beállításodat, kiterjesztésedet szinkronizálja a Microsofthoz, ha kéred. Ebből logikusan következik, ha a VSCodot felparaméterezve használod, más-más kiterjesztésekkel és user beállításokkal, akkor honnan is tudná szerencsétlen VSCode melyik az amit szinkronizáljon. 

Többen is feltették az ilyen kérdéseket, amire az volt válasz, hogy az adott "projekt" könyvtáron belül ha megnyitunk egy fájlt arra fog ráállni, az ahhoz tartozó beállítások érvényesülnek a következő build(/burn/debug) folyamán.

Az információ amit adtam, az publikus, benne van a dokumentációban, ha valaki mást állít, és az emberek azt hiszik el, hát legyen. Én így használom, és semmi nem zavarodik össze, vagy veszik össze a másikkal. Minden úgy működik ahogy kell.

Másik kicsit zavaros, most akkor te a git -be (felhőbe) dolgozol?
Jó dolog, viszont én régi motoros vagyok csak abban bízom ami a kezemben van - a munkahelyemen elvárják hogy mindent a céges felhőbe rakjak, de háztájiban a saját szerverkémre hagyatkozom.

Ez céges policy kérdés, ha Te mást használsz, mert előírják, vagy úgy döntöttél, akkor mást használsz, ezen kár gondolkodnod, hogy én mit részesítek előnyben. Az csak egy könyvtárnév volt abban amit írtam, ha cicamica lett volna ott, ez a bekezdés másról szólna. :-)

Biztos van olyan is, de igazából nem érdekel hogy védik a szervereiket. Egy biztos igencsak tartanak az ipari kémkedéstől és úgy tűnik nem alaptalanul. A biztonsági őr eléggé divatja múlt mainapság, de az első munkahelyemen (>10 év) volt kutyás, géppisztolyos őrök voltak, éjjel nappal - viszont nem volt szerver.

A 39 év nagyjából rám is igaz, csak én alapvetően gyengeáramú villamosmérnökként kezdtem.

* Én egy indián vagyok. Minden indián hazudik.

> Másik kicsit zavaros, most akkor te a git -be (felhőbe) dolgozol?

A saját szerveredre is tehetsz fel git-et, nem kötelező annak felhőben lennie. Ott van a Gitlab, ami pár kattintással telepíthető egy Linux szerverre, de ha még az ilyen termékektől is félsz, lényegében Git és OpenSSH felhasználásával és egy mapparendszerrel össze lehet rakni bármikor egy on-prem, semmit nem fogyasztó Git szervert, ahol tudsz központi verziókövetést használni, de ez a központ a saját szerverkéden lesz.
 

Blog | @hron84

valahol egy üzemeltetőmaci most mérgesen toppant a lábával 

via @snq-

Félni, azt talán nem, de akkora projektjeim, ami ezt indokolná nincsenek - régebben ha kellett az arj inkrementális tömörítését használtam.

Nem szórtam ki, hogy ezt saját magam kis szerverére is telepíthetem, lehet gyakorlásként felteszem. Hátha jobban megértem ezt a cuccot.

* Én egy indián vagyok. Minden indián hazudik.

Szerkesztve: 2022. 11. 20., v – 21:41

Tobb platformot hasznalok parhuzamosan egy projekt kereteben: esp32, stm32, wemosd1 es atmega328. Ez utóbbi 6 al-projektben szerepel, mint platform. Azaz van 6+3 kodbazis egy github repoban, nehany kozos xytype.h file-lal. Nekem az valt be hogy arduino-cli -vel, batch fajlokkal toltom fel a megfelelo kodot a megfelelo device-ra. El lehet rontani, hibaztam mar, de megszoktam.

Magat a kodot vscode-ban szerkesztem, formazom, mentem. Majd alt+tab, felfele nyil, enter.

Ui: kihagytam, par napja van egy attiny85 resze is. 

Huh, ezt nagyon érdemes volt elolvasnom, nagyon tetszik ez a szeparálhatóság!

Próbáltam én is az arduino keretrendszert kicsit modernizálni (2.0, Platform.io...).

(ezek szerint jó lesz az egyik config-dir web programozásra, a másik pedig esp-hez, így nem lesz teleaggatva egyszerre minden pluginnal, remek!)

Köszönöm szépen FeriX!

Lehet nem felel meg a címben megadottaknak, viszont ezen még változtathatok.

Mennyire jó a VScode a C# fejlesztéshez?
Pl. mennyire követhetőek a változások az M$ oldaláról?
A régebbi, Visual Studio -ban készült projektet mennyire lehet bonyolult átemelni (cégesen még a Community edition is licensz köteles)?
Az eddigiekben javasolt metodika - minden "projekthez" új mappa rendszer - mennyire alkalmazható C# fejlesztés során?

* Én egy indián vagyok. Minden indián hazudik.