C# Source Generators Tutorial

  Рет қаралды 25,741

Raw Coding

Raw Coding

Күн бұрын

Пікірлер: 58
@RawCoding
@RawCoding 2 жыл бұрын
Thank you to TwentyFourMinutes for teaching me about source generators. Please take a minute to star his PostgreSQL ORM Repo github.com/TwentyFourMinutes/Venflow
@josmitube
@josmitube 2 жыл бұрын
The most complicated 'Hello world!' toturial I've seen in my life. But I love it!
@noggog5106
@noggog5106 2 жыл бұрын
My preferred way of debugging source generators is via unit tests. Not only are they good to do to catch all the edge cases, as usual, but for source generators they provide a very nice entry point for debugging. Can write the test code you want to drive your source generator, run the test, and debug as your source generator processes it and creates output. Nice and clean. I only try my source generator against my actual end-usage source code when I'm mostly done with the source generator and want to give it that last final test.
@RawCoding
@RawCoding 2 жыл бұрын
Pro tip
@jonasgranlund4427
@jonasgranlund4427 2 жыл бұрын
Really good content. I look forward to look into this area more.
@RawCoding
@RawCoding 2 жыл бұрын
Cheers
@Xania-js
@Xania-js Жыл бұрын
dotnet clean does not help on updating analyzer at all in my case. For everyone having th same issue, here is what I use: "dotnet build-server shutdown ; dotnet build"
@asdasddas100
@asdasddas100 2 жыл бұрын
Why not just use AppendLine with the StringBuilder? I don't understand why you're just using Append like it's the only way to use StringBuilder But honestly I wouldn't even use StringBuilder, I'd probably opt for the new triple equals feature.
@RawCoding
@RawCoding 2 жыл бұрын
It doesn’t matter, using string builder will produce complex code in a source generator.
@clonkex
@clonkex Жыл бұрын
28:52 _"...I think they kinda deserve it"_ *shocked pikachu face*
@thinker2273
@thinker2273 Жыл бұрын
It is worth noting that ISourceGenerator is deprecated and should NOT be used AT ALL. All generators should be using IIncrementalGenerator, the newer, much more performant and optimized, source generation API. This isn't just me saying this, this has been stated on multiple occasions by the compiler architects who work on Roslyn.
@abyshekhar
@abyshekhar 11 ай бұрын
Valuable information 🙏🏻
@ivandrofly
@ivandrofly Жыл бұрын
07:34 - Debugging 23:30 - flag to store the file in output dir
@huyvole9724
@huyvole9724 2 жыл бұрын
Sorry can it apply for anything? I don't understand what it will apply
@RawCoding
@RawCoding 2 жыл бұрын
Use code as data to create more code.
@huyvole9724
@huyvole9724 2 жыл бұрын
@@RawCoding wow its great, can tou upload more video tutorial about this?
@woistdasniveau8290
@woistdasniveau8290 Жыл бұрын
How do you open this window where you search for everything?
@amnesia3490
@amnesia3490 Жыл бұрын
How can I share my soruce generator project as nuget package or assembly/dll reference, I couldnt really find documentation and it really doesnt work by just referencing, looks like it needs some configuration.
@RawCoding
@RawCoding Жыл бұрын
check this out: github.com/T0shik/Shpec let me know if you need help
@amnesia3490
@amnesia3490 Жыл бұрын
@@RawCoding PackagePath="analyzers/dotnet/cs" is the key I was needed
@eddietime1811
@eddietime1811 Жыл бұрын
Rossynt isnt working for newer versions of Rider?
@RawCoding
@RawCoding Жыл бұрын
haven't checked
@jaycejones2622
@jaycejones2622 2 жыл бұрын
Why use the timeout and breakpoint instead of 'Debugger.Launch();'?
@RawCoding
@RawCoding 2 жыл бұрын
I've not known about this, will check it out and write back here
@Plagueheart
@Plagueheart Жыл бұрын
You could simply add the following to Initialize() for Debugging purposes #if DEBUG if (!Debugger.IsAttached) Debugger.Launch(); #endif
@Plagueheart
@Plagueheart Жыл бұрын
CTRL+SHIFT+A (Action Menu) -> Build, Execution, Deployment > Debugger -> "JIT Debugger" set Rider as a Default Debugger
@RatzMouze
@RatzMouze Жыл бұрын
Anyone ever told you that you look very much like Topher Grace? specifically with his hair and beard style from the black mirror episode "smithereens"? - Just with darker hair and no glasses haha
@RawCoding
@RawCoding Жыл бұрын
Never, I had Jesus and Golfoyle
@IElial
@IElial Жыл бұрын
Followed this but ended catch-up by incremental police. VS yell at me I should use IIncrementalGenerator instead.
@nocgod
@nocgod 2 жыл бұрын
could you please make a video about incremental source generators? I'm playing around with source generators, trying to create a service client based on an interface+models. this video really set something straight in my head THANKS!!!
@RawCoding
@RawCoding 2 жыл бұрын
I’ll see when I get around to them
@noctavel
@noctavel 2 жыл бұрын
The way many other languages are able to generate code compared to what C# is capable of makes C# seems ridiculous
@aamirali8114
@aamirali8114 7 ай бұрын
Why i am the only one my SourceGenerator is not generating anything i am not getting which step i missed
@markhill1066
@markhill1066 7 ай бұрын
Crazy hot take that experienced devs debug less
@solidsloth1
@solidsloth1 Жыл бұрын
This was super helpful. I was having a hard time getting started using the Microsoft Docs, but this has given me the confidence to really dig in. Just wish I'd found this 6 months ago. Thanks for the great video!
@udayughareja
@udayughareja 2 жыл бұрын
i'm using source generator to create full crud module (using mutation) from db to controller and its works well slowing down the build
@meJevin
@meJevin 2 жыл бұрын
Holy shit why would you do that
@udayughareja
@udayughareja 2 жыл бұрын
@@meJevin rapid app development/ boilerplate code
@SharafMansour
@SharafMansour 2 жыл бұрын
Wow awesome work! I needed this video ♥️
@RawCoding
@RawCoding 2 жыл бұрын
Glad you like it )
@udayughareja
@udayughareja 2 жыл бұрын
i saw there's a new thing online, incremental source generator, what's the difference and how it is better than this?
@meJevin
@meJevin 2 жыл бұрын
They are designed to take advantage of caching. Otherwise they are the same old source generators
@udayughareja
@udayughareja 2 жыл бұрын
@@meJevin thanks i believe i'll use it sooner or later, my app build is very slow
@giladfreidkin4369
@giladfreidkin4369 2 жыл бұрын
How did you manage to make the source generator work for .NET6? According to docs and my experience, the generator only works when written on .netstandard 2.0 project.
@RawCoding
@RawCoding 2 жыл бұрын
Not sure what to tell you it just works
@ALOKSHARMAMD
@ALOKSHARMAMD Жыл бұрын
that was before the api is changed, the problem with core is it changed too many times.. good thing now that we are on .net 7 things have come to a standardized version.
@stringyGG
@stringyGG 2 жыл бұрын
Came here for that epic thumbnail lol.
@RawCoding
@RawCoding 2 жыл бұрын
Haha 😂
@yourockst0ne
@yourockst0ne 2 жыл бұрын
great video 😊
@RawCoding
@RawCoding 2 жыл бұрын
Cheers )
@emmanueladebiyi2109
@emmanueladebiyi2109 10 ай бұрын
Amazing tutorial. Thanks
@joga_bonito_aro
@joga_bonito_aro 10 ай бұрын
Love that thumbnail
@evanboltsis
@evanboltsis 2 жыл бұрын
Your channel is so underrated. Thanks for another great video.
@brunogiovagnoli3022
@brunogiovagnoli3022 2 жыл бұрын
I loved the thumbnail, thanks as always
@alexiosplomaritis9713
@alexiosplomaritis9713 2 жыл бұрын
Great content as always :)
@joseluissuarez4093
@joseluissuarez4093 2 жыл бұрын
;)
@z0n_
@z0n_ 2 жыл бұрын
Could you make a video about learning / debugging 3rd party code (open source)? I have Rider installed so I am able to debug some of the code with the decompilation feature but often I get the "Could Not Evaluate The Value" error when trying to inspect a variables in 3rd party code. Great video btw! With the new "Raw string literals" feature coming in C# 11, do you think it's still better to use the Roslyn Quoter? Seem like the code would be much more readable with "raw strings" tho more error-prone.
@RawCoding
@RawCoding 2 жыл бұрын
Thank you, on the debugging - what advice could I give except covering your specific usecase? I feel like debugging is a bit of a skill like googling, otherwise with programming your just zooming in on the issue, by finding the correct place in the execution sequence. as for string literals - that's a nope, you'll have alot of "logic" processing strings and values to create syntax, it's not going to be 1 neat string literal, it's going to be many little pieces put together based on your rules.
What is Span in C# and why you should be using it
15:15
Nick Chapsas
Рет қаралды 255 М.
All About C# Source Generators | .NET Conf 2023
27:59
dotnet
Рет қаралды 26 М.
Man Mocks Wife's Exercise Routine, Faces Embarrassment at Work #shorts
00:32
Fabiosa Best Lifehacks
Рет қаралды 5 МЛН
Incredible: Teacher builds airplane to teach kids behavior! #shorts
00:32
Fabiosa Stories
Рет қаралды 10 МЛН
Being Competent With Coding Is More Fun
11:13
TheVimeagen
Рет қаралды 80 М.
Thoughts About Unit Testing | Prime Reacts
11:21
ThePrimeTime
Рет қаралды 225 М.
20 Advanced Coding Tips For Big Unity Projects
22:23
Tesseract
Рет қаралды 186 М.
The Home Server I've Been Wanting
18:14
Hardware Haven
Рет қаралды 140 М.
Microservices are Technical Debt
31:59
NeetCodeIO
Рет қаралды 327 М.
I added reflection to C++ just to make my game work.
16:30
C# Source Generators
14:46
dotnet
Рет қаралды 29 М.
AutoMapper Clone using C# Source Generators
19:21
Raw Coding
Рет қаралды 6 М.
Premature Optimization
12:39
CodeAesthetic
Рет қаралды 810 М.
Man Mocks Wife's Exercise Routine, Faces Embarrassment at Work #shorts
00:32
Fabiosa Best Lifehacks
Рет қаралды 5 МЛН