KROS Dev Meetup #6 (C# source generators & Bicep)

Na najbližšom online KROS Dev Meetupe si priblížime C# Source Generators a povieme si aj o spravovaní infraštruktúry pomocou nástroja Bicep. Tešíme sa na vás 28. septembra o 17-tej cez ZOOM: Launch Meeting - Zoom

:date: Agenda:
• 17:00 Úvod
• 17:05 Roslyn C# source generators (Milan “Miňo” Martiniak)
• 18:00 Bicep – Infrastructure as code (Stano „Gabo“ Peťko)
• 19:00 Virtual beer

Viac info na KROS Dev Meetup #6 | Meetup

1 Like

Mne sa este nepodarilo stihnut ziaden online meetup, tak polozim otazku teraz.

K source generatorom - jestvuje nejaka kniznica, ktora by ulahcovala tu compile time reflexiu? Levo voci tej v runtime mi pride strasne tazkopadna a je k nej malo dokumentacie. Proste nieco aby som si mohol vypytat zoznam typov, z tpu zoznam metod, propertiesov,…

Ahoj @harrison314

Bohužiaľ o žiadnej neviem (to ale neznamená, že nieje :slight_smile: ). Ale súhlasím s tebou, Roslyn semantic / syntactic model je komplikovaný, neintuitívny a relatívne slabo zdokumentovaný :frowning:

Mne pomáha okno Syntax Visualizer čo je priamo vo VS. Ukáže to pekne syntaktický strom a od toho sa už dá odraziť.

Je to skoda, tym, ze sa to nedbuguje lahko, tak je to take…

Hej ten poznam este z dob, ked som si robil vlastne code analizatori, no prv ako som dokoncil vsteko co som chcel, tak sa rovnake veci objavili vo Visual Studiu.

Source generatori su tu uz takmer rok, myslel som, ze spravia vecsiu dieru do sveta. No v komunite sa objavilo len par projektov, aj ked niektore su zuajimave (avatar, dotvariant, Tinyhand, ValueObjectGenerator, StringLiteralGenerator).

Neviem ci to je ty komplikovanym Roslin modelom alebo nemoznostou prepisovat uz existujuci kod, ci specifickym pouzitim.

Čo sa týka debugovania, tak od VS 16.10 je to výrazne jednoduchšie.
Stačí v csproj nastaviť, že sa jedná o Roslyn komponent

<IsRoslynComponent>true</IsRoslynComponent>

A v launchSettings.json command name a target projekt nad ktorým sa to ma spúšťať. Napr.:

"profiles": {
    "MMLib.MediatR.Generators": {
      "commandName": "DebugRoslynComponent",
      "targetProject": "..\\demo\\MMLib.MediatR.Generators.Demo.csproj"
    }
  }

Čo sa týka vznikajúcich generátorov, tak tu postupne vzniká ich zoznam amis92/csharp-source-generators: A list of C# Source Generators (not necessarily awesome) and associated resources

Ale o viacerých možno ani nevieme a predsa ich používame, pretože sú súčasťou iných knižníc. Napríklad mám pocit, že Refit niektoré veci generuje pomocou Source generátorov.

O tom debugovani som nevedel. Tak vyzera, ze sa na tom meetupe dozviem nove zaujimave veci.

1 Like

Bude aj zaznam? Lebo som nestihol nic.

Áno bude, len to ešte kolega nespracoval. Keď bude zverejnený tak pošlem odkazy.

1 Like

Sľúbené videá:

Roslyn C# Source Generators
Bicep – Infrastructure as Code

2 Likes

Zaujal ma ten generator, ktory robi s MediatR kontrolleri.

Validacia vstupu sa riesi cez FluentValidation a pidavnym middlewarom v MediatR?

Ten generátor to ako taký nerieši.
Ale áno, mi na validáciu vstupov používame FluentValidation
v kombinácii s rôznymi MediatR pipeline behaviors. (komplexnejšie validačné scenáre, multi tenant, …)