improve SEO
· 1 year ago
9fac3151ef7ae83604771bd30b2d2df6dc79c80d
Parent:
187c718f2
1 file changed +146 −106
- dotnet-cheatsheet.html +146 −106
Diff
--- a/dotnet-cheatsheet.html +++ b/dotnet-cheatsheet.html @@ -3,34 +3,70 @@ <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <title>.NET & C# Language Cheatsheet - Modern Ecosystem Overview</title> + <title>Interactive .NET & C# Cheatsheet: Modern Ecosystem & Language Guide</title> <link rel="icon" href="data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 100 100%22><text y=%22.9em%22 font-size=%2290%22>#️⃣</text></svg>"> <!-- SEO Meta Description --> - <meta name="description" content="Interactive cheatsheet for the .NET ecosystem and C# language. Covers modern .NET (Core) versions, key C# features, major components, libraries, frameworks (ASP.NET Core, MAUI, EF Core), and tooling for senior developers and architects."> + <meta name="description" content="Comprehensive and interactive cheatsheet for the .NET ecosystem and C# language. Explore modern .NET (Core) versions, key C# features, major components, libraries, frameworks like ASP.NET Core, MAUI, EF Core, and essential tooling for senior developers and architects."> + <!-- Keywords --> + <meta name="keywords" content=".NET, C#, Cheatsheet, .NET Core, ASP.NET Core, MAUI, EF Core, C# Language Features, .NET SDK, .NET Runtime, Visual Studio, NuGet, Programming Guide, Software Development, Microsoft Technologies, .NET 8, C# 12, Modern .NET"> <!-- Canonical URL --> - <link rel="canonical" href="http://cheatsheets.davidveksler.com/dotnet-cheatsheet.html"> + <link rel="canonical" href="https://cheatsheets.davidveksler.com/dotnet-cheatsheet.html"> - <!-- Social Media Metadata --> - <meta property="og:title" content=".NET & C# Language Cheatsheet - Modern Frameworks, Libraries & Language Features"> - <meta property="og:description" content="Visual guide to the .NET platform, C# language features, ASP.NET Core, MAUI, EF Core, key libraries, and architectural concepts for modern .NET development."> + <!-- Social Media Metadata (Open Graph) --> + <meta property="og:title" content="Interactive .NET & C# Cheatsheet: Modern Frameworks, Libraries & Language Features Guide"> + <meta property="og:description" content="An in-depth visual guide to the .NET platform, latest C# language features, ASP.NET Core, .NET MAUI, EF Core, essential libraries, and architectural concepts for modern .NET development. Perfect for developers and architects."> <meta property="og:type" content="article"> - <meta property="og:url" content="http://cheatsheets.davidveksler.com/dotnet-cheatsheet.html"> - <meta property="og:image" content="http://cheatsheets.davidveksler.com/images/dotnet-cheatsheet.png"> - <meta property="og:image:alt" content="Diagram showing the interconnected components of the .NET ecosystem including C# language, .NET SDK, ASP.NET Core, MAUI, and EF Core."> + <meta property="og:url" content="https://cheatsheets.davidveksler.com/dotnet-cheatsheet.html"> + <meta property="og:image" content="https://cheatsheets.davidveksler.com/images/dotnet-cheatsheet.png"> + <meta property="og:image:alt" content="Comprehensive visual diagram of the modern .NET ecosystem, illustrating connections between C#, .NET SDK, ASP.NET Core, MAUI, EF Core, and key development concepts. Your go-to .NET cheatsheet visual."> <meta property="og:site_name" content="David Veksler Cheatsheets"> + <meta property="article:published_time" content="2023-01-15T09:00:00Z"> + <meta property="article:modified_time" content="2025-05-10T10:00:00Z"> + <!-- Optional: <meta property="article:author" content="https://www.linkedin.com/in/davidveksler/"> --> + <!-- Twitter Card Metadata --> <meta name="twitter:card" content="summary_large_image"> - <meta name="twitter:title" content=".NET & C# Language Cheatsheet - Modern Frameworks, Libraries & Language Features"> - <meta name="twitter:description" content="Visual guide to the .NET platform, C# language features, ASP.NET Core, MAUI, EF Core, key libraries, and architectural concepts for modern .NET development."> - <meta name="twitter:image" content="http://cheatsheets.davidveksler.com/images/dotnet-cheatsheet.png"> - <meta name="twitter:image:alt" content="Diagram showing the interconnected components of the .NET ecosystem and C# language."> + <meta name="twitter:title" content="Interactive .NET & C# Cheatsheet: Modern Frameworks & Language Guide"> + <meta name="twitter:description" content="Explore the .NET platform, C# language, ASP.NET Core, MAUI, EF Core, and more with this visual guide for modern .NET developers and architects."> + <meta name="twitter:image" content="https://cheatsheets.davidveksler.com/images/dotnet-cheatsheet.png"> + <meta name="twitter:image:alt" content="Visual overview of the .NET and C# ecosystem for developers. Highlights frameworks like ASP.NET Core, MAUI, and core language features."> <!-- Optional: <meta name="twitter:site" content="@YourTwitterHandle"> --> - <!-- Optional: <meta name="twitter:creator" content="@YourTwitterHandleForCreator"> --> + <!-- Optional: <meta name="twitter:creator" content="@DavidVekslerTwitter"> --> + <!-- Structured Data (JSON-LD) --> + <script type="application/ld+json"> + { + "@context": "https://schema.org", + "@type": "TechArticle", + "headline": "Interactive .NET & C# Language Cheatsheet - Modern Ecosystem Overview", + "description": "A comprehensive and interactive cheatsheet for the .NET ecosystem and C# language, covering modern .NET versions, key C# features, major components, libraries, frameworks (ASP.NET Core, MAUI, EF Core), and tooling for senior developers and architects.", + "image": "https://cheatsheets.davidveksler.com/images/dotnet-cheatsheet.png", + "author": { + "@type": "Person", + "name": "David Veksler", + "url": "https://www.linkedin.com/in/davidveksler/" + }, + "publisher": { + "@type": "Organization", + "name": "David Veksler Cheatsheets", + "logo": { + "@type": "ImageObject", + "url": "https://cheatsheets.davidveksler.com/images/logo-placeholder.png" + } + }, + "datePublished": "2023-01-15T09:00:00Z", + "dateModified": "2025-05-10T10:00:00Z", + "mainEntityOfPage": { + "@type": "WebPage", + "@id": "https://cheatsheets.davidveksler.com/dotnet-cheatsheet.html" + }, + "keywords": ".NET, C#, Cheatsheet, .NET Core, ASP.NET Core, MAUI, EF Core, C# Language Features, .NET SDK, .NET Runtime, LINQ, Async Programming, Visual Studio, NuGet, .NET Architecture, Software Development, Programming Guide" + } + </script> <link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" rel="stylesheet"> <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/[email protected]/font/bootstrap-icons.min.css"> @@ -236,7 +272,7 @@ </head> <body> <header class="page-header"> - <h1><i class="bi bi-box-seam"></i> .NET & C# Language Cheatsheet</h1> + <h1><i class="bi bi-box-seam" aria-hidden="true"></i> .NET & C# Language Cheatsheet</h1> <p class="lead">An interactive guide to modern .NET components, C# language features, frameworks, and libraries for architects & senior developers.</p> </header> <div class="container" id="main-container"> @@ -248,11 +284,11 @@ <div class="col-lg-4 col-md-6"> <div class="info-card card-platform" id="card-dotnet-sdk"> <div class="card-body"> - <h5><i class="bi bi-tools"></i> .NET SDK</h5> + <h5><i class="bi bi-tools" aria-hidden="true"></i> .NET SDK</h5> <div class="card-content-wrapper"> <p class="summary">The <span class="term">Software Development Kit</span> providing tools to <span class="term">develop, build, test, and publish</span> .NET applications. Includes the .NET CLI, compilers, and runtime. <a href="https://learn.microsoft.com/en-us/dotnet/core/sdk" target="_blank" rel="noopener noreferrer">SDK Overview</a></p> <button class="btn btn-sm details-toggle" type="button" data-bs-toggle="collapse" data-bs-target="#collapseDotnetSdk" aria-expanded="false" aria-controls="collapseDotnetSdk"> - Details <i class="bi bi-chevron-down"></i> + Details <i class="bi bi-chevron-down" aria-hidden="true"></i> </button> </div> </div> @@ -274,11 +310,11 @@ <div class="col-lg-4 col-md-6"> <div class="info-card card-platform" id="card-dotnet-runtime"> <div class="card-body"> - <h5><i class="bi bi-cpu"></i> .NET Runtime</h5> + <h5><i class="bi bi-cpu" aria-hidden="true"></i> .NET Runtime</h5> <div class="card-content-wrapper"> <p class="summary">The execution environment for .NET applications. Manages <span class="term">memory (GC)</span>, <span class="term">JIT compilation</span>, type safety, and exception handling. <a href="https://learn.microsoft.com/en-us/dotnet/core/introduction#net-runtime" target="_blank" rel="noopener noreferrer">Runtime Overview</a></p> <button class="btn btn-sm details-toggle" type="button" data-bs-toggle="collapse" data-bs-target="#collapseDotnetRuntime" aria-expanded="false" aria-controls="collapseDotnetRuntime"> - Details <i class="bi bi-chevron-down"></i> + Details <i class="bi bi-chevron-down" aria-hidden="true"></i> </button> </div> </div> @@ -300,11 +336,11 @@ <div class="col-lg-4 col-md-6"> <div class="info-card card-platform" id="card-bcl"> <div class="card-body"> - <h5><i class="bi bi-collection"></i> Base Class Library (BCL)</h5> + <h5><i class="bi bi-collection" aria-hidden="true"></i> Base Class Library (BCL)</h5> <div class="card-content-wrapper"> <p class="summary">A rich set of <span class="term">core libraries</span> providing fundamental functionalities like collections, I/O, networking, JSON handling, and threading. <a href="https://learn.microsoft.com/en-us/dotnet/standard/bcl/" target="_blank" rel="noopener noreferrer">BCL Overview</a></p> <button class="btn btn-sm details-toggle" type="button" data-bs-toggle="collapse" data-bs-target="#collapseBcl" aria-expanded="false" aria-controls="collapseBcl"> - Details <i class="bi bi-chevron-down"></i> + Details <i class="bi bi-chevron-down" aria-hidden="true"></i> </button> </div> </div> @@ -325,11 +361,11 @@ <div class="col-lg-4 col-md-6"> <div class="info-card card-platform" id="card-cil"> <div class="card-body"> - <h5><i class="bi bi-file-earmark-code"></i> CIL / MSIL</h5> + <h5><i class="bi bi-file-earmark-code" aria-hidden="true"></i> CIL / MSIL</h5> <div class="card-content-wrapper"> <p class="summary"><span class="term">Common Intermediate Language</span> (formerly MSIL). The platform-agnostic compiled output of .NET languages, executed by the CLR. <a href="https://learn.microsoft.com/en-us/dotnet/standard/managed-execution-process#cil-and-jit-compilation" target="_blank" rel="noopener noreferrer">CIL and JIT</a></p> <button class="btn btn-sm details-toggle" type="button" data-bs-toggle="collapse" data-bs-target="#collapseCil" aria-expanded="false" aria-controls="collapseCil"> - Details <i class="bi bi-chevron-down"></i> + Details <i class="bi bi-chevron-down" aria-hidden="true"></i> </button> </div> </div> @@ -348,11 +384,11 @@ <div class="col-lg-4 col-md-6"> <div class="info-card card-platform" id="card-assemblies"> <div class="card-body"> - <h5><i class="bi bi-archive"></i> Assemblies & Metadata</h5> + <h5><i class="bi bi-archive" aria-hidden="true"></i> Assemblies & Metadata</h5> <div class="card-content-wrapper"> <p class="summary">Units of <span class="term">deployment and versioning</span> in .NET (DLLs or EXEs). Contain CIL code and self-describing <span class="term">metadata</span>. <a href="https://learn.microsoft.com/en-us/dotnet/standard/assembly/" target="_blank" rel="noopener noreferrer">Assemblies in .NET</a></p> <button class="btn btn-sm details-toggle" type="button" data-bs-toggle="collapse" data-bs-target="#collapseAssemblies" aria-expanded="false" aria-controls="collapseAssemblies"> - Details <i class="bi bi-chevron-down"></i> + Details <i class="bi bi-chevron-down" aria-hidden="true"></i> </button> </div> </div> @@ -379,11 +415,11 @@ <div class="col-lg-4 col-md-6"> <div class="info-card card-csharp" id="card-csharp-overview"> <div class="card-body"> - <h5><i class="bi bi-code-slash"></i> C# Language Overview</h5> + <h5><i class="bi bi-code-slash" aria-hidden="true"></i> C# Language Overview</h5> <div class="card-content-wrapper"> <p class="summary">A modern, object-oriented, and type-safe programming language. Key to .NET development, offering powerful features for building diverse applications. <a href="https://learn.microsoft.com/en-us/dotnet/csharp/" target="_blank" rel="noopener noreferrer">C# Guide</a></p> <button class="btn btn-sm details-toggle" type="button" data-bs-toggle="collapse" data-bs-target="#collapseCsharpOverview" aria-expanded="false" aria-controls="collapseCsharpOverview"> - Details <i class="bi bi-chevron-down"></i> + Details <i class="bi bi-chevron-down" aria-hidden="true"></i> </button> </div> </div> @@ -405,11 +441,11 @@ <div class="col-lg-4 col-md-6"> <div class="info-card card-csharp" id="card-csharp-async"> <div class="card-body"> - <h5><i class="bi bi-lightning"></i> Async Programming (async/await)</h5> + <h5><i class="bi bi-lightning" aria-hidden="true"></i> Async Programming (async/await)</h5> <div class="card-content-wrapper"> <p class="summary">Simplifies writing non-blocking code using <span class="term">async</span> and <span class="term">await</span> keywords, crucial for responsive UIs and scalable services. <a href="https://learn.microsoft.com/en-us/dotnet/csharp/async" target="_blank" rel="noopener noreferrer">Async Overview</a></p> <button class="btn btn-sm details-toggle" type="button" data-bs-toggle="collapse" data-bs-target="#collapseCsharpAsync" aria-expanded="false" aria-controls="collapseCsharpAsync"> - Details <i class="bi bi-chevron-down"></i> + Details <i class="bi bi-chevron-down" aria-hidden="true"></i> </button> </div> </div> @@ -431,11 +467,11 @@ <div class="col-lg-4 col-md-6"> <div class="info-card card-csharp" id="card-csharp-linq"> <div class="card-body"> - <h5><i class="bi bi-funnel"></i> LINQ (Language Integrated Query)</h5> + <h5><i class="bi bi-funnel" aria-hidden="true"></i> LINQ (Language Integrated Query)</h5> <div class="card-content-wrapper"> <p class="summary">Provides powerful, SQL-like query capabilities directly within C# for collections, databases (via EF Core), XML, and other data sources. <a href="https://learn.microsoft.com/en-us/dotnet/csharp/linq/" target="_blank" rel="noopener noreferrer">LINQ Docs</a></p> <button class="btn btn-sm details-toggle" type="button" data-bs-toggle="collapse" data-bs-target="#collapseCsharpLinq" aria-expanded="false" aria-controls="collapseCsharpLinq"> - Details <i class="bi bi-chevron-down"></i> + Details <i class="bi bi-chevron-down" aria-hidden="true"></i> </button> </div> </div> @@ -456,11 +492,11 @@ <div class="col-lg-4 col-md-6"> <div class="info-card card-csharp" id="card-csharp-pattern-matching"> <div class="card-body"> - <h5><i class="bi bi-grid-3x3-gap"></i> Pattern Matching</h5> + <h5><i class="bi bi-grid-3x3-gap" aria-hidden="true"></i> Pattern Matching</h5> <div class="card-content-wrapper"> <p class="summary">Enhanced control flow based on the "shape" of data using <span class="term">is</span> expressions and <span class="term">switch expressions/statements</span>. <a href="https://learn.microsoft.com/en-us/dotnet/csharp/fundamentals/functional/pattern-matching" target="_blank" rel="noopener noreferrer">Pattern Matching</a></p> <button class="btn btn-sm details-toggle" type="button" data-bs-toggle="collapse" data-bs-target="#collapseCsharpPatternMatching" aria-expanded="false" aria-controls="collapseCsharpPatternMatching"> - Details <i class="bi bi-chevron-down"></i> + Details <i class="bi bi-chevron-down" aria-hidden="true"></i> </button> </div> </div> @@ -482,11 +518,11 @@ <div class="col-lg-4 col-md-6"> <div class="info-card card-csharp" id="card-csharp-records"> <div class="card-body"> - <h5><i class="bi bi-journal-bookmark"></i> Records & Immutability</h5> + <h5><i class="bi bi-journal-bookmark" aria-hidden="true"></i> Records & Immutability</h5> <div class="card-content-wrapper"> <p class="summary">Concise syntax for creating immutable reference types (<span class="term">record class</span>) or value types (<span class="term">record struct</span>) ideal for data transfer objects (DTOs). <a href="https://learn.microsoft.com/en-us/dotnet/csharp/language-reference/builtin-types/record" target="_blank" rel="noopener noreferrer">Records Docs</a></p> <button class="btn btn-sm details-toggle" type="button" data-bs-toggle="collapse" data-bs-target="#collapseCsharpRecords" aria-expanded="false" aria-controls="collapseCsharpRecords"> - Details <i class="bi bi-chevron-down"></i> + Details <i class="bi bi-chevron-down" aria-hidden="true"></i> </button> </div> </div> @@ -508,11 +544,11 @@ <div class="col-lg-4 col-md-6"> <div class="info-card card-csharp" id="card-csharp-nullable-types"> <div class="card-body"> - <h5><i class="bi bi-question-circle"></i> Nullable Reference Types</h5> + <h5><i class="bi bi-question-circle" aria-hidden="true"></i> Nullable Reference Types</h5> <div class="card-content-wrapper"> <p class="summary">Helps prevent <span class="term">NullReferenceException</span> at runtime by distinguishing between nullable and non-nullable reference types through compiler analysis. <a href="https://learn.microsoft.com/en-us/dotnet/csharp/nullable-references" target="_blank" rel="noopener noreferrer">Nullable Types</a></p> <button class="btn btn-sm details-toggle" type="button" data-bs-toggle="collapse" data-bs-target="#collapseCsharpNullableTypes" aria-expanded="false" aria-controls="collapseCsharpNullableTypes"> - Details <i class="bi bi-chevron-down"></i> + Details <i class="bi bi-chevron-down" aria-hidden="true"></i> </button> </div> </div> @@ -542,11 +578,11 @@ <div class="col-lg-4 col-md-6"> <div class="info-card card-web" id="card-aspnetcore"> <div class="card-body"> - <h5><i class="bi bi-globe2"></i> ASP.NET Core</h5> + <h5><i class="bi bi-globe2" aria-hidden="true"></i> ASP.NET Core</h5> <div class="card-content-wrapper"> <p class="summary">Modern, cross-platform framework for building <span class="term">web apps, APIs, and microservices</span>. High-performance and modular. <a href="https://learn.microsoft.com/en-us/aspnet/core/" target="_blank" rel="noopener noreferrer">ASP.NET Core Docs</a></p> <button class="btn btn-sm details-toggle" type="button" data-bs-toggle="collapse" data-bs-target="#collapseAspnetcore" aria-expanded="false" aria-controls="collapseAspnetcore"> - Details <i class="bi bi-chevron-down"></i> + Details <i class="bi bi-chevron-down" aria-hidden="true"></i> </button> </div> </div> @@ -567,11 +603,11 @@ <div class="col-lg-4 col-md-6"> <div class="info-card card-crossplatform" id="card-maui"> <div class="card-body"> - <h5><i class="bi bi-phone-vibrate"></i> .NET MAUI</h5> + <h5><i class="bi bi-phone-vibrate" aria-hidden="true"></i> .NET MAUI</h5> <div class="card-content-wrapper"> <p class="summary"><span class="term">Multi-platform App UI</span>. Build native mobile and desktop apps from a single C# codebase for iOS, Android, Windows, and macOS. <a href="https://learn.microsoft.com/en-us/dotnet/maui/" target="_blank" rel="noopener noreferrer">.NET MAUI Docs</a></p> <button class="btn btn-sm details-toggle" type="button" data-bs-toggle="collapse" data-bs-target="#collapseMaui" aria-expanded="false" aria-controls="collapseMaui"> - Details <i class="bi bi-chevron-down"></i> + Details <i class="bi bi-chevron-down" aria-hidden="true"></i> </button> </div> </div> @@ -594,11 +630,11 @@ <div class="col-lg-4 col-md-6"> <div class="info-card card-crossplatform" id="card-wpf"> <div class="card-body"> - <h5><i class="bi bi-window-desktop"></i> WPF</h5> + <h5><i class="bi bi-window-desktop" aria-hidden="true"></i> WPF</h5> <div class="card-content-wrapper"> <p class="summary"><span class="term">Windows Presentation Foundation</span>. A UI framework for creating desktop client applications on Windows with rich user interfaces. <a href="https://learn.microsoft.com/en-us/dotnet/desktop/wpf/" target="_blank" rel="noopener noreferrer">WPF Docs</a></p> <button class="btn btn-sm details-toggle" type="button" data-bs-toggle="collapse" data-bs-target="#collapseWpf" aria-expanded="false" aria-controls="collapseWpf"> - Details <i class="bi bi-chevron-down"></i> + Details <i class="bi bi-chevron-down" aria-hidden="true"></i> </button> </div> </div> @@ -618,11 +654,11 @@ <div class="col-lg-4 col-md-6"> <div class="info-card card-crossplatform" id="card-winforms"> <div class="card-body"> - <h5><i class="bi bi-app-indicator"></i> Windows Forms</h5> + <h5><i class="bi bi-app-indicator" aria-hidden="true"></i> Windows Forms</h5> <div class="card-content-wrapper"> <p class="summary">A framework for creating Windows desktop applications with a rich set of UI controls and a visual designer. <a href="https://learn.microsoft.com/en-us/dotnet/desktop/winforms/" target="_blank" rel="noopener noreferrer">Windows Forms Docs</a></p> <button class="btn btn-sm details-toggle" type="button" data-bs-toggle="collapse" data-bs-target="#collapseWinforms" aria-expanded="false" aria-controls="collapseWinforms"> - Details <i class="bi bi-chevron-down"></i> + Details <i class="bi bi-chevron-down" aria-hidden="true"></i> </button> </div> </div> @@ -642,11 +678,11 @@ <div class="col-lg-4 col-md-6"> <div class="info-card card-general" id="card-console"> <div class="card-body"> - <h5><i class="bi bi-terminal"></i> Console Applications</h5> + <h5><i class="bi bi-terminal" aria-hidden="true"></i> Console Applications</h5> <div class="card-content-wrapper"> <p class="summary">Command-line applications that run in a text-based console window, ideal for utilities and background tasks. <a href="https://learn.microsoft.com/en-us/dotnet/core/tutorials/top-level-templates" target="_blank" rel="noopener noreferrer">Console App Docs</a></p> <button class="btn btn-sm details-toggle" type="button" data-bs-toggle="collapse" data-bs-target="#collapseConsole" aria-expanded="false" aria-controls="collapseConsole"> - Details <i class="bi bi-chevron-down"></i> + Details <i class="bi bi-chevron-down" aria-hidden="true"></i> </button> </div> </div> @@ -666,11 +702,11 @@ <div class="col-lg-4 col-md-6"> <div class="info-card card-web" id="card-worker-services"> <div class="card-body"> - <h5><i class="bi bi-hdd-stack"></i> Worker Services</h5> + <h5><i class="bi bi-hdd-stack" aria-hidden="true"></i> Worker Services</h5> <div class="card-content-wrapper"> <p class="summary">Framework for creating long-running background services, message queue processors, or other non-UI tasks. <a href="https://learn.microsoft.com/en-us/aspnet/core/fundamentals/host/hosted-services" target="_blank" rel="noopener noreferrer">Worker Services Docs</a></p> <button class="btn btn-sm details-toggle" type="button" data-bs-toggle="collapse" data-bs-target="#collapseWorkerServices" aria-expanded="false" aria-controls="collapseWorkerServices"> - Details <i class="bi bi-chevron-down"></i> + Details <i class="bi bi-chevron-down" aria-hidden="true"></i> </button> </div> </div> @@ -690,11 +726,11 @@ <div class="col-lg-4 col-md-6"> <div class="info-card card-web" id="card-cloud-native"> <div class="card-body"> - <h5><i class="bi bi-cloud-arrow-up"></i> .NET Aspire</h5> + <h5><i class="bi bi-cloud-arrow-up" aria-hidden="true"></i> .NET Aspire</h5> <div class="card-content-wrapper"> <p class="summary">An opinionated, cloud-ready stack for building observable, production-ready, distributed applications. <a href="https://learn.microsoft.com/en-us/dotnet/aspire/" target="_blank" rel="noopener noreferrer">.NET Aspire Docs</a></p> <button class="btn btn-sm details-toggle" type="button" data-bs-toggle="collapse" data-bs-target="#collapseCloudNative" aria-expanded="false" aria-controls="collapseCloudNative"> - Details <i class="bi bi-chevron-down"></i> + Details <i class="bi bi-chevron-down" aria-hidden="true"></i> </button> </div> </div> @@ -722,11 +758,11 @@ <div class="col-lg-4 col-md-6"> <div class="info-card card-data" id="card-efcore"> <div class="card-body"> - <h5><i class="bi bi-server"></i> Entity Framework Core</h5> + <h5><i class="bi bi-server" aria-hidden="true"></i> Entity Framework Core</h5> <div class="card-content-wrapper"> <p class="summary">Modern, cross-platform <span class="term">Object-Relational Mapper (ORM)</span>. Enables developers to work with databases using .NET objects. <a href="https://learn.microsoft.com/en-us/ef/core/" target="_blank" rel="noopener noreferrer">EF Core Docs</a></p> <button class="btn btn-sm details-toggle" type="button" data-bs-toggle="collapse" data-bs-target="#collapseEfcore" aria-expanded="false" aria-controls="collapseEfcore"> - Details <i class="bi bi-chevron-down"></i> + Details <i class="bi bi-chevron-down" aria-hidden="true"></i> </button> </div> </div> @@ -746,11 +782,11 @@ <div class="col-lg-4 col-md-6"> <div class="info-card card-data" id="card-dapper"> <div class="card-body"> - <h5><i class="bi bi-braces-asterisk"></i> Dapper</h5> + <h5><i class="bi bi-braces-asterisk" aria-hidden="true"></i> Dapper</h5> <div class="card-content-wrapper"> <p class="summary">A simple object mapper for .NET, focusing on performance. Often used as a "micro-ORM". <a href="https://github.com/DapperLib/Dapper" target="_blank" rel="noopener noreferrer">Dapper GitHub</a></p> <button class="btn btn-sm details-toggle" type="button" data-bs-toggle="collapse" data-bs-target="#collapseDapper" aria-expanded="false" aria-controls="collapseDapper"> - Details <i class="bi bi-chevron-down"></i> + Details <i class="bi bi-chevron-down" aria-hidden="true"></i> </button> </div> </div> @@ -770,11 +806,11 @@ <div class="col-lg-4 col-md-6"> <div class="info-card card-libraries" id="card-networking"> <div class="card-body"> - <h5><i class="bi bi-hdd-network"></i> Networking (HTTP, gRPC)</h5> + <h5><i class="bi bi-hdd-network" aria-hidden="true"></i> Networking (HTTP, gRPC)</h5> <div class="card-content-wrapper"> <p class="summary">.NET provides rich libraries for network communication, including <span class="term">HttpClient</span> for HTTP requests and support for <span class="term">gRPC</span>. <a href="https://learn.microsoft.com/en-us/dotnet/fundamentals/networking/overview" target="_blank" rel="noopener noreferrer">Networking Overview</a></p> <button class="btn btn-sm details-toggle" type="button" data-bs-toggle="collapse" data-bs-target="#collapseNetworking" aria-expanded="false" aria-controls="collapseNetworking"> - Details <i class="bi bi-chevron-down"></i> + Details <i class="bi bi-chevron-down" aria-hidden="true"></i> </button> </div> </div> @@ -791,11 +827,11 @@ <div class="col-lg-4 col-md-6"> <div class="info-card card-libraries" id="card-security-libs"> <div class="card-body"> - <h5><i class="bi bi-shield-lock"></i> Security Libraries</h5> + <h5><i class="bi bi-shield-lock" aria-hidden="true"></i> Security Libraries</h5> <div class="card-content-wrapper"> <p class="summary">Built-in libraries for cryptography, authentication, authorization, and data protection. <a href="https://learn.microsoft.com/en-us/dotnet/standard/security/" target="_blank" rel="noopener noreferrer">.NET Security Docs</a></p> <button class="btn btn-sm details-toggle" type="button" data-bs-toggle="collapse" data-bs-target="#collapseSecurityLibs" aria-expanded="false" aria-controls="collapseSecurityLibs"> - Details <i class="bi bi-chevron-down"></i> + Details <i class="bi bi-chevron-down" aria-hidden="true"></i> </button> </div> </div> @@ -813,11 +849,11 @@ <div class="col-lg-4 col-md-6"> <div class="info-card card-libraries" id="card-configuration"> <div class="card-body"> - <h5><i class="bi bi-gear"></i> Configuration</h5> + <h5><i class="bi bi-gear" aria-hidden="true"></i> Configuration</h5> <div class="card-content-wrapper"> <p class="summary">Flexible system for managing application settings from various sources (JSON, XML, environment variables, command-line). <a href="https://learn.microsoft.com/en-us/dotnet/core/extensions/configuration" target="_blank" rel="noopener noreferrer">Configuration Docs</a></p> <button class="btn btn-sm details-toggle" type="button" data-bs-toggle="collapse" data-bs-target="#collapseConfiguration" aria-expanded="false" aria-controls="collapseConfiguration"> - Details <i class="bi bi-chevron-down"></i> + Details <i class="bi bi-chevron-down" aria-hidden="true"></i> </button> </div> </div> @@ -834,11 +870,11 @@ <div class="col-lg-4 col-md-6"> <div class="info-card card-libraries" id="card-logging"> <div class="card-body"> - <h5><i class="bi bi-journal-text"></i> Logging</h5> + <h5><i class="bi bi-journal-text" aria-hidden="true"></i> Logging</h5> <div class="card-content-wrapper"> <p class="summary">Built-in logging API with providers for console, debug output, EventSource, EventLog, and third-party systems. <a href="https://learn.microsoft.com/en-us/dotnet/core/extensions/logging" target="_blank" rel="noopener noreferrer">Logging Docs</a></p> <button class="btn btn-sm details-toggle" type="button" data-bs-toggle="collapse" data-bs-target="#collapseLogging" aria-expanded="false" aria-controls="collapseLogging"> - Details <i class="bi bi-chevron-down"></i> + Details <i class="bi bi-chevron-down" aria-hidden="true"></i> </button> </div> </div> @@ -856,11 +892,11 @@ <div class="col-lg-4 col-md-6"> <div class="info-card card-libraries" id="card-di"> <div class="card-body"> - <h5><i class="bi bi-diagram-3"></i> Dependency Injection (DI)</h5> + <h5><i class="bi bi-diagram-3" aria-hidden="true"></i> Dependency Injection (DI)</h5> <div class="card-content-wrapper"> <p class="summary">First-class support for DI, promoting loose coupling and testability. Manages object lifecycles and dependencies. <a href="https://learn.microsoft.com/en-us/dotnet/core/extensions/dependency-injection" target="_blank" rel="noopener noreferrer">DI Docs</a></p> <button class="btn btn-sm details-toggle" type="button" data-bs-toggle="collapse" data-bs-target="#collapseDi" aria-expanded="false" aria-controls="collapseDi"> - Details <i class="bi bi-chevron-down"></i> + Details <i class="bi bi-chevron-down" aria-hidden="true"></i> </button> </div> </div> @@ -878,11 +914,11 @@ <div class="col-lg-4 col-md-6"> <div class="info-card card-libraries" id="card-testing"> <div class="card-body"> - <h5><i class="bi bi-clipboard2-check"></i> Testing</h5> + <h5><i class="bi bi-clipboard2-check" aria-hidden="true"></i> Testing</h5> <div class="card-content-wrapper"> <p class="summary">Support for unit testing, integration testing, and web application testing using frameworks like MSTest, NUnit, xUnit. <a href="https://learn.microsoft.com/en-us/dotnet/core/testing/" target="_blank" rel="noopener noreferrer">.NET Testing Docs</a></p> <button class="btn btn-sm details-toggle" type="button" data-bs-toggle="collapse" data-bs-target="#collapseTesting" aria-expanded="false" aria-controls="collapseTesting"> - Details <i class="bi bi-chevron-down"></i> + Details <i class="bi bi-chevron-down" aria-hidden="true"></i> </button> </div> </div> @@ -908,11 +944,11 @@ <div class="col-lg-4 col-md-6"> <div class="info-card card-tooling" id="card-ides"> <div class="card-body"> - <h5><i class="bi bi-laptop"></i> IDEs & Editors</h5> + <h5><i class="bi bi-laptop" aria-hidden="true"></i> IDEs & Editors</h5> <div class="card-content-wrapper"> <p class="summary">Integrated Development Environments and code editors for .NET. <span class="term">Visual Studio</span>, <span class="term">VS Code</span>, and <span class="term">JetBrains Rider</span> are prominent. </p> <button class="btn btn-sm details-toggle" type="button" data-bs-toggle="collapse" data-bs-target="#collapseIdes" aria-expanded="false" aria-controls="collapseIdes"> - Details <i class="bi bi-chevron-down"></i> + Details <i class="bi bi-chevron-down" aria-hidden="true"></i> </button> </div> </div> @@ -929,11 +965,11 @@ <div class="col-lg-4 col-md-6"> <div class="info-card card-tooling" id="card-nuget"> <div class="card-body"> - <h5><i class="bi bi-box"></i> NuGet</h5> + <h5><i class="bi bi-box" aria-hidden="true"></i> NuGet</h5> <div class="card-content-wrapper"> <p class="summary">The package manager for .NET. Allows developers to create, share, and consume reusable libraries (packages). <a href="https://learn.microsoft.com/en-us/nuget/" target="_blank" rel="noopener noreferrer">NuGet Docs</a></p> <button class="btn btn-sm details-toggle" type="button" data-bs-toggle="collapse" data-bs-target="#collapseNuget" aria-expanded="false" aria-controls="collapseNuget"> - Details <i class="bi bi-chevron-down"></i> + Details <i class="bi bi-chevron-down" aria-hidden="true"></i> </button> </div> </div> @@ -951,11 +987,11 @@ <div class="col-lg-4 col-md-6"> <div class="info-card card-tooling" id="card-source-control"> <div class="card-body"> - <h5><i class="bi bi-git"></i> Source Control</h5> + <h5><i class="bi bi-git" aria-hidden="true"></i> Source Control</h5> <div class="card-content-wrapper"> <p class="summary"><span class="term">Git</span> is the de facto standard for version control. Platforms like <span class="term">GitHub</span>, <span class="term">Azure Repos</span>, and GitLab provide hosting and collaboration. <a href="https://git-scm.com/doc" target="_blank" rel="noopener noreferrer">Git Docs</a></p> <button class="btn btn-sm details-toggle" type="button" data-bs-toggle="collapse" data-bs-target="#collapseSourceControl" aria-expanded="false" aria-controls="collapseSourceControl"> - Details <i class="bi bi-chevron-down"></i> + Details <i class="bi bi-chevron-down" aria-hidden="true"></i> </button> </div> </div> @@ -972,11 +1008,11 @@ <div class="col-lg-4 col-md-6"> <div class="info-card card-tooling" id="card-ci-cd"> <div class="card-body"> - <h5><i class="bi bi-rocket-takeoff"></i> Build & CI/CD</h5> + <h5><i class="bi bi-rocket-takeoff" aria-hidden="true"></i> Build & CI/CD</h5> <div class="card-content-wrapper"> <p class="summary">Automated build, test, and deployment pipelines using tools like <span class="term">GitHub Actions</span>, <span class="term">Azure Pipelines</span>, Jenkins. <a href="https://learn.microsoft.com/en-us/dotnet/devops/get-started" target="_blank" rel="noopener noreferrer">.NET DevOps</a></p> <button class="btn btn-sm details-toggle" type="button" data-bs-toggle="collapse" data-bs-target="#collapseCiCd" aria-expanded="false" aria-controls="collapseCiCd"> - Details <i class="bi bi-chevron-down"></i> + Details <i class="bi bi-chevron-down" aria-hidden="true"></i> </button> </div> </div> @@ -993,11 +1029,11 @@ <div class="col-lg-4 col-md-6"> <div class="info-card card-tooling" id="card-diagnostics"> <div class="card-body"> - <h5><i class="bi bi-activity"></i> Performance & Diagnostics</h5> + <h5><i class="bi bi-activity" aria-hidden="true"></i> Performance & Diagnostics</h5> <div class="card-content-wrapper"> <p class="summary">Tools and APIs for profiling, debugging, and monitoring .NET applications. <a href="https://learn.microsoft.com/en-us/dotnet/core/diagnostics/" target="_blank" rel="noopener noreferrer">Diagnostics Overview</a></p> <button class="btn btn-sm details-toggle" type="button" data-bs-toggle="collapse" data-bs-target="#collapseDiagnostics" aria-expanded="false" aria-controls="collapseDiagnostics"> - Details <i class="bi bi-chevron-down"></i> + Details <i class="bi bi-chevron-down" aria-hidden="true"></i> </button> </div> </div> @@ -1022,11 +1058,11 @@ <div class="col-lg-4 col-md-6"> <div class="info-card card-advanced" id="card-native-aot"> <div class="card-body"> - <h5><i class="bi bi-lightning-charge-fill"></i> Native AOT</h5> + <h5><i class="bi bi-lightning-charge-fill" aria-hidden="true"></i> Native AOT</h5> <div class="card-content-wrapper"> <p class="summary"><span class="term">Ahead-of-Time</span> compilation that compiles .NET code directly to native machine code for faster startup, smaller deployments, and reduced memory. <a href="https://learn.microsoft.com/en-us/dotnet/core/deploying/native-aot/" target="_blank" rel="noopener noreferrer">Native AOT Docs</a></p> <button class="btn btn-sm details-toggle" type="button" data-bs-toggle="collapse" data-bs-target="#collapseNativeAot" aria-expanded="false" aria-controls="collapseNativeAot"> - Details <i class="bi bi-chevron-down"></i> + Details <i class="bi bi-chevron-down" aria-hidden="true"></i> </button> </div> </div> @@ -1051,11 +1087,11 @@ <div class="col-lg-4 col-md-6"> <div class="info-card card-advanced" id="card-modularity"> <div class="card-body"> - <h5><i class="bi bi-puzzle"></i> Modularity & Libraries</h5> + <h5><i class="bi bi-puzzle" aria-hidden="true"></i> Modularity & Libraries</h5> <div class="card-content-wrapper"> <p class="summary">Designing systems with well-defined <span class="term">class libraries</span> and understanding <span class="term">.NET Standard</span> (for older library compatibility). <a href="https://learn.microsoft.com/en-us/dotnet/standard/class-libraries" target="_blank" rel="noopener noreferrer">Class Libraries</a></p> <button class="btn btn-sm details-toggle" type="button" data-bs-toggle="collapse" data-bs-target="#collapseModularity" aria-expanded="false" aria-controls="collapseModularity"> - Details <i class="bi bi-chevron-down"></i> + Details <i class="bi bi-chevron-down" aria-hidden="true"></i> </button> </div> </div> @@ -1072,11 +1108,11 @@ <div class="col-lg-4 col-md-6"> <div class="info-card card-advanced" id="card-interop"> <div class="card-body"> - <h5><i class="bi bi-link-45deg"></i> Interoperability</h5> + <h5><i class="bi bi-link-45deg" aria-hidden="true"></i> Interoperability</h5> <div class="card-content-wrapper"> <p class="summary">Interacting with non-.NET code, such as native C/C++ libraries (<span class="term">P/Invoke</span>) or COM components. <a href="https://learn.microsoft.com/en-us/dotnet/standard/native-interop/" target="_blank" rel="noopener noreferrer">Native Interop</a></p> <button class="btn btn-sm details-toggle" type="button" data-bs-toggle="collapse" data-bs-target="#collapseInterop" aria-expanded="false" aria-controls="collapseInterop"> - Details <i class="bi bi-chevron-down"></i> + Details <i class="bi bi-chevron-down" aria-hidden="true"></i> </button> </div> </div> @@ -1093,11 +1129,11 @@ <div class="col-lg-4 col-md-6"> <div class="info-card card-advanced" id="card-source-generators"> <div class="card-body"> - <h5><i class="bi bi-magic"></i> Source Generators</h5> + <h5><i class="bi bi-magic" aria-hidden="true"></i> Source Generators</h5> <div class="card-content-wrapper"> <p class="summary">A Roslyn compiler feature that lets C# developers inspect user code and generate new C# source files during compilation. <a href="https://learn.microsoft.com/en-us/dotnet/csharp/roslyn-sdk/source-generators-overview" target="_blank" rel="noopener noreferrer">Source Generators Docs</a></p> <button class="btn btn-sm details-toggle" type="button" data-bs-toggle="collapse" data-bs-target="#collapseSourceGenerators" aria-expanded="false" aria-controls="collapseSourceGenerators"> - Details <i class="bi bi-chevron-down"></i> + Details <i class="bi bi-chevron-down" aria-hidden="true"></i> </button> </div> </div> @@ -1116,11 +1152,11 @@ <div class="col-lg-4 col-md-6"> <div class="info-card card-advanced" id="card-observability"> <div class="card-body"> - <h5><i class="bi bi-graph-up-arrow"></i> Observability</h5> + <h5><i class="bi bi-graph-up-arrow" aria-hidden="true"></i> Observability</h5> <div class="card-content-wrapper"> <p class="summary">Designing systems to provide insights into their behavior through <span class="term">logging, metrics, and tracing</span>. Often using <span class="term">OpenTelemetry</span>. <a href="https://learn.microsoft.com/en-us/dotnet/core/diagnostics/observability-with-otel" target="_blank" rel="noopener noreferrer">OpenTelemetry with .NET</a></p> <button class="btn btn-sm details-toggle" type="button" data-bs-toggle="collapse" data-bs-target="#collapseObservability" aria-expanded="false" aria-controls="collapseObservability"> - Details <i class="bi bi-chevron-down"></i> + Details <i class="bi bi-chevron-down" aria-hidden="true"></i> </button> </div> </div> @@ -1138,11 +1174,11 @@ <div class="col-lg-4 col-md-6"> <div class="info-card card-advanced" id="card-api-design"> <div class="card-body"> - <h5><i class="bi bi-bricks"></i> API Design</h5> + <h5><i class="bi bi-bricks" aria-hidden="true"></i> API Design</h5> <div class="card-content-wrapper"> <p class="summary">Principles for designing robust, maintainable, and usable APIs, especially for <span class="term">RESTful web services</span>. <a href="https://learn.microsoft.com/en-us/aspnet/core/fundamentals/best-practices" target="_blank" rel="noopener noreferrer">ASP.NET Core Best Practices</a></p> <button class="btn btn-sm details-toggle" type="button" data-bs-toggle="collapse" data-bs-target="#collapseApiDesign" aria-expanded="false" aria-controls="collapseApiDesign"> - Details <i class="bi bi-chevron-down"></i> + Details <i class="bi bi-chevron-down" aria-hidden="true"></i> </button> </div> </div> @@ -1169,11 +1205,11 @@ <div class="col-12"> <div class="info-card card-general" id="card-arch-summary"> <div class="card-body"> - <h5 class="text-center"><i class="bi bi-building-gear"></i> Architectural Decision Points</h5> + <h5 class="text-center"><i class="bi bi-building-gear" aria-hidden="true"></i> Architectural Decision Points</h5> <div class="card-content-wrapper"> <p class="summary text-center">When designing .NET systems, architects must weigh <span class="term">scalability</span>, <span class="term">resilience</span>, <span class="term">security</span>, <span class="term">maintainability</span>, <span class="term">deployment strategies</span>, and <span class="term">cost optimization</span>. Choosing the right application models and libraries is crucial. <a href="https://learn.microsoft.com/en-us/dotnet/architecture/modern-web-apps-azure/" target="_blank" rel="noopener noreferrer">.NET Architecture Guides</a></p> <button class="btn btn-sm details-toggle mx-auto" type="button" data-bs-toggle="collapse" data-bs-target="#collapseArchConsiderations" aria-expanded="false" aria-controls="collapseArchConsiderations"> - Explore Further <i class="bi bi-chevron-down"></i> + Explore Further <i class="bi bi-chevron-down" aria-hidden="true"></i> </button> </div> </div> @@ -1198,25 +1234,26 @@ </div> <!-- /container --> <footer class="container text-center pb-3"> - <p class="mb-2">© <span id="currentYear"></span> <!-- Consider updating: Your Name/Company Here --> .NET Cheatsheet Contributor</p> + <p class="mb-1">© <span id="currentYear"></span> David Veksler Cheatsheets</p> + <p class="mb-2" style="font-size: 0.8em;">Last Updated: <span id="lastUpdatedDate">May 10, 2025</span></p> <!-- Placeholder: Update this dynamically or manually --> <div> <a href="https://learn.microsoft.com/en-us/dotnet/" title=".NET Documentation" target="_blank" rel="noopener noreferrer" class="mx-2 link-secondary"> - <i class="bi bi-book"></i> .NET Docs + <i class="bi bi-book" aria-hidden="true"></i> .NET Docs </a> <a href="https://learn.microsoft.com/en-us/dotnet/csharp/" title="C# Documentation" target="_blank" rel="noopener noreferrer" class="mx-2 link-secondary"> - <i class="bi bi-filetype-cs"></i> C# Docs + <i class="bi bi-filetype-cs" aria-hidden="true"></i> C# Docs </a> <a href="https://dotnet.microsoft.com/en-us/learn/architecture" title=".NET Architecture Center" target="_blank" rel="noopener noreferrer" class="mx-2 link-secondary"> - <i class="bi bi-diagram-2"></i> .NET Architecture Center + <i class="bi bi-diagram-2" aria-hidden="true"></i> .NET Architecture Center </a> </div> <div> <a href="https://www.linkedin.com/in/davidveksler/" title="David Veksler on LinkedIn" target="_blank" rel="noopener noreferrer" class="mx-2 link-secondary"> - <i class="bi bi-linkedin"></i> LinkedIn + <i class="bi bi-linkedin" aria-hidden="true"></i> LinkedIn </a> - <a href="http://cheatsheets.davidveksler.com/" title="Browse All Cheatsheets" class="mx-2 link-secondary"> - <i class="bi bi-collection"></i> All Cheatsheets + <a href="https://cheatsheets.davidveksler.com/" title="Browse All Cheatsheets" class="mx-2 link-secondary"> + <i class="bi bi-collection" aria-hidden="true"></i> All Cheatsheets </a> </div> </footer> @@ -1357,26 +1394,29 @@ document.addEventListener('DOMContentLoaded', () => { const collapseElements = document.querySelectorAll('.collapse'); collapseElements.forEach(collapseEl => { const button = document.querySelector(`.details-toggle[data-bs-target="#${collapseEl.id}"]`); - const icon = button ? button.querySelector('.bi') : null; - if (button && icon) { - const updateIcon = () => { + const iconEl = button ? button.querySelector('.bi') : null; // Renamed to avoid conflict with global `icon` + if (button && iconEl) { + const updateIconState = () => { // Renamed function if (collapseEl.classList.contains('show')) { - icon.classList.remove('bi-chevron-down'); icon.classList.add('bi-chevron-up'); + iconEl.classList.remove('bi-chevron-down'); iconEl.classList.add('bi-chevron-up'); button.setAttribute('aria-expanded', 'true'); } else { - icon.classList.remove('bi-chevron-up'); icon.classList.add('bi-chevron-down'); + iconEl.classList.remove('bi-chevron-up'); iconEl.classList.add('bi-chevron-down'); button.setAttribute('aria-expanded', 'false'); } }; - updateIcon(); // Initial state - collapseEl.addEventListener('show.bs.collapse', () => { updateIcon(); setTimeout(positionLines, 50); }); + updateIconState(); // Initial state + collapseEl.addEventListener('show.bs.collapse', () => { updateIconState(); setTimeout(positionLines, 50); }); collapseEl.addEventListener('shown.bs.collapse', positionLines); - collapseEl.addEventListener('hide.bs.collapse', () => { updateIcon(); setTimeout(positionLines, 50); }); + collapseEl.addEventListener('hide.bs.collapse', () => { updateIconState(); setTimeout(positionLines, 50); }); collapseEl.addEventListener('hidden.bs.collapse', positionLines); } }); document.getElementById('currentYear').textContent = new Date().getFullYear(); + // Note: The "Last Updated" date in the footer is static HTML here. + // For a live site, this should be updated dynamically or during the build process. + // The JSON-LD schema has a `dateModified` field that should reflect the actual last modification date. }); </script> </body>