Go to file member (Visual Studio)

Dlouho mě trápilo, jak se ve větším souboru rychle donavigovat na membera, jehož jméno znám.

Resharper/Rider mají přímo Go to file member Alt+ \.

Visual Studio 2022 má Go to member, který má ale výchozí scope na Current solution.

Je to takový ten klasický Go to… s prefixem m:, který prostě prohledává member, ale v celé solution, ani to nedává výsledky aktuálního souboru na první místo 😭. Chybí tam jakákoliv klávesová zkratka, nebo cesta, která by to otevřela předscopované na Current file.

OVŠEM!!! Má to ovšem jednu pro mě až dnes objevenou vlastnost, která to činí použitelným (pro mě) – pamatuje si to poslední scope, a to samostatně pro jednotlivé use-case. Má to navíc stejnou klávesovou zkratku Alt + \.

Takže:

Jednou to otevřete přes Go to member (Alt+\) a změníte si scope na Current file a napříště to tam zůstane zapamatováno.

Neovlivní to však ostatní use-case. Pro Go to all (Ctrl + T) nebo Go to file (Ctrl + Shift +T) si to u mě dále pamatuje scope Current solution.

Quality of live changer! 🤣🥳

.NET Memory Internals – záznam a slides [Robert Haken, WUG Days Brno, 6.9.2024]

Záznam z přednášky pro konferenci WUG Days Brno z 6. září 2024, kde jsem ukazoval základy uspořádání paměti v .NET, internals Garbage Collectoru a pokročilý debugging pomocí Windows Debuggeru (WinDbg) a SOS extension.

Téma není zaměřené primárně na novinky, ale jde do hloubky — jak .NET skutečně spravuje paměť, jak to funguje uvnitř a jak se v tom vyznat při pokročilém debuggingu (Memory Dump, WinDbg, SOS).

Zásobník (Stack)

Zásobník je paměť pevné velikosti (defaultně 1 MB na thread), organizovaná pomocí Stack framů. Každé volání metody přidá Stack frame s lokálními proměnnými, parametry a návratovou adresou. Stack je základním mechanismem řízení běhu programu — bez něj by se metody neměly kam vracet. Stack overflow nastává téměř výhradně kvůli nekonečné rekurzi, ne proto, že by aplikace měla příliš hluboký call stack.

Managed Heap a Garbage Collector

.NET runtime si od Windows alokuje nativní paměť a část z ní předá Garbage Collectoru, který ji uspořádá jako managed heap. GC je zodpovědný nejen za uvolňování paměti (jak napovídá název), ale i za samotnou alokaci referenčních typů. Klíčovými koncepty jsou GC Generations (Gen0, Gen1, Gen2) pro generační sběr odpadu a Large Object Heap (LOH) pro velké objekty nad 85 000 bytů.

Windows Debugger (WinDbg) a Memory Dump

WinDbg je mocný, ale uživatelsky nepřívětivý nástroj pro analýzu .NET procesů a Memory Dumpů. Instaluje se přes Microsoft Store. Nejčastější workflow: z Task Manageru vytvoříte Memory Dump (pravé tlačítko → Create memory dump file), soubor načtete do WinDbg a analyzujete. Pro práci s .NET objekty je nezbytná SOS (Son of Strike) extension, která umožňuje zkoumat managed heap, zásobníky threadů a jednotlivé objekty přímo v paměti.

Slides

Novinky v .NET 9 – záznam a slides [Robert Haken, WUG Days Brno, 5.9.2024]

Záznam ze Vzdělávacího okénka HAVIT z 5. září 2024, kde jsem telegraficky představoval novinky přicházející v „.NET 9 vlně“.

Slides

ASP.NET Core SignalR – základní seznámení [Jiří Kanda, HAVIT Vzdělávací okénko, 27.6.2024]

Záznam ze Vzdělávacího okénka HAVIT z 27. června 2024, kde Jiří Kanda povídal o SignalR v ASP.NET Core.

JavaScript pro Blazor vývojáře [Alex Hájek, HAVIT Vzdělávací okénko, 12.6.2024]

Záznam ze Vzdělávacího okénka HAVIT z 12. června 2024, kde Alex Hájek procházel JavaScript tipy a triky pro Blazor vývojáře.

Blazor Performance 2 – Many components/parameters/events [Robert Haken, HAVIT Vzdělávací okénko. 10.7.2024]

Záznam ze Vzdělávacího okénka HAVIT ze 10. července 2024, kde jsem prezentoval druhý díl série na téma výkonu Blazor aplikací.

C# & Exceptions – Jak je nepoužívat [Jiří Kanda, HAVIT Vzdělávací okénko, 15.5.2024]

Záznam ze Vzdělávacího okénka HAVIT z 15. května 2024, kde Jiří Kanda povídal o výjimkách v .NET a C#.

Blazor Performance 1 – Expensive data reload [Robert Haken, HAVIT Vzdělávací okénko, 17.4.2024]

Záznam ze Vzdělávacího okénka HAVIT ze 17. dubna 2024, kde jsem prezentoval první díl série na téma výkonu Blazor aplikací.

Passwordless přihlašování Windows Hello for Business [Dan Hrubý, HAVIT Vzdělávací okénko, 3.4.2024]

Záznam ze Vzdělávacího okénka HAVIT z 3. dubna 2024, kde Daniel Hrubý povídal o passwordless přihlašování.

Blazor NET8 – Životní cyklus komponent [Jiří Kanda, HAVIT Vzdělávací okénko, 28.3.2024]

Záznam ze Vzdělávacího okénka HAVIT z 28. března 2024, kde Jiří Kanda povídal o Blazoru – o životním cyklu komponent a jeho zákoutích – aktualizovaná podoba session z roku 2019.