2024
Secure cross-platform and file-based token cache for MSAL.NET
![Secure cross-platform and file-based token cache for MSAL.NET](/secure-cross-platform-file-based-token-cache-for-msal-net/cover_hu23163ff3872658463eab12da41a12451_126303_120x120_fill_box_smart1_3.png)
Programmatically monitoring and reacting to resource logs in .NET Aspire
![Programmatically monitoring and reacting to resource logs in .NET Aspire](/programmatically-monitoring-reacting-resource-logs-dotnet-aspire/cover_hud0af97f102bd3c2a932e203753414b67_161219_120x120_fill_box_smart1_3.png)
Automate your .NET SDK updates for consistent and reproducible builds with global.json and Renovate
![Automate your .NET SDK updates for consistent and reproducible builds with global.json and Renovate](/automate-dotnet-sdk-updates-global-json-renovate/cover_huad82b2c64ad578fd8730f9260a533976_120467_120x120_fill_box_smart1_3.png)
Must-have resources for new .NET Aspire developers
![Must-have resources for new .NET Aspire developers](/must-have-resources-for-new-dotnet-aspire-developers/cover_hu66f3eb4e8867e492f504cddd91dcb664_95954_120x120_fill_q50_box_smart1.jpg)
Disabling .NET Aspire authentication to skip the login page
![Disabling .NET Aspire authentication to skip the login page](/disabling-dotnet-aspire-authentication-skip-login-page/cover_huc502f9aee84dd9b1b2bd47533e318535_171409_120x120_fill_box_smart1_3.png)
.NET Aspire is the best way to experiment with Dapr during local development
![.NET Aspire is the best way to experiment with Dapr during local development](/dotnet-aspire-best-way-to-experiment-dapr-local-dev/cover_huf52bf30923e1b06fa09cc87032f06d30_172878_120x120_fill_box_smart1_3.png)
Configure Renovate to handle nuspec files
Configure Renovate to update preview versions of NuGet packages
![Configure Renovate to update preview versions of NuGet packages](/configure-renovate-update-preview-nuget-packages/cover_hu8a74791fc693648379e28c2b70185a7b_79097_120x120_fill_box_smart1_3.png)
Automated NuGet package version range updates in .NET projects using Renovate
![Automated NuGet package version range updates in .NET projects using Renovate](/nuget-version-range-updates-dotnet-renovate/cover_hu67da6dca45b1a5f80660d8c356b42790_131669_120x120_fill_box_smart1_3.png)
Referencing external Docker containers in .NET Aspire using the new custom resources API
![Referencing external Docker containers in .NET Aspire using the new custom resources API](/referencing-external-docker-containers-dotnet-aspire-custom-resources/dashboard-external-container_hu36719c095a2144b2c2860e8b681697c1_69736_120x120_fill_box_smart1_3.png)
TreatWarningsAsErrors and warnaserror are not the same
Locally test and validate your Renovate configuration files
![Locally test and validate your Renovate configuration files](/locally-test-validate-renovate-config-files/cover_hu1738f2395c52442aaf10cb39c7b79388_241774_120x120_fill_q50_box_smart1.jpg)
Remove git hash from assembly informational version in .NET 8
![Remove git hash from assembly informational version in .NET 8](/remove-git-hash-from-assembly-informational-version-dotnet-8/cover_huf537866edc897808cef3a2ee4d7b5a20_55351_120x120_fill_box_smart1_3.png)
Your custom HttpClient delegating handlers should be transient
![Your custom HttpClient delegating handlers should be transient](/custom-httpclient-delegating-handlers-should-be-transient/cover_huce562506d1d198146f6a9d4220d77712_799571_120x120_fill_q50_box_smart1.jpg)
How to securely reverse-proxy ASP.NET Core web apps
![How to securely reverse-proxy ASP.NET Core web apps](/securely-reverse-proxy-aspnet-core-web-apps/cover_hue2601776e5425483cbaef1dde8572338_203008_120x120_fill_q50_box_smart1.jpg)
Enable tab completion for the .NET CLI in your terminal
![Enable tab completion for the .NET CLI in your terminal](/enable-dotnet-cli-tab-completion-terminal/cover_hua030d503d06253757840e3d3cab20ca1_529945_120x120_fill_q50_box_smart1.jpg)
.NET Aspire dashboard is the best tool to visualize your OpenTelemetry data during local development
![.NET Aspire dashboard is the best tool to visualize your OpenTelemetry data during local development](/dotnet-aspire-dashboard-best-tool-visualize-opentelemetry-local-dev/cover_hu021175cc858e958b754cefc27938fea9_45200_120x120_fill_box_smart1_3.png)
Running Ruby on Rails web apps with .NET Aspire
![Running Ruby on Rails web apps with .NET Aspire](/running-ruby-on-rails-with-dotnet-aspire/cover_hub1c612531248fe70b67ecc857de5da63_64734_120x120_fill_box_smart1_3.png)
Key derivation in .NET using HKDF
![Key derivation in .NET using HKDF](/key-derivation-dotnet-using-hkdf/cover_hu300dac86e08b3fad7013d78bf23d6a91_1694658_120x120_fill_box_smart1_3.png)
Implementing fine-grained access control with ASP.NET Core custom endpoint metadata
![Implementing fine-grained access control with ASP.NET Core custom endpoint metadata](/implementing-fine-grained-access-control-aspnet-core-endpoint-metadata/cover_hu2c972461c5f86e7c84c6d98319058315_1652383_120x120_fill_box_smart1_3.png)
Programmatically elevate a .NET application on any platform
![Programmatically elevate a .NET application on any platform](/programmatically-elevate-dotnet-app-on-any-platform/cover_hu00c80ae59be210d84c7c2ea2a2279180_898424_120x120_fill_box_smart1_3.png)
Best practices for integrating the Azure Storage SDK into your .NET applications
![Best practices for integrating the Azure Storage SDK into your .NET applications](/best-practices-azure-storage-sdk-integration-in-dotnet-apps/cover_hu91e2ea08320a242d402c0d508fd66fd7_965477_120x120_fill_box_smart1_3.png)
2023
Evolutive and robust password hashing using PBKDF2 in .NET
![Evolutive and robust password hashing using PBKDF2 in .NET](/evolutive-and-robust-password-hashing-using-pbkdf2-in-dotnet/cover_hu8258dd739b2d30b05d724eae97fddab6_1028101_120x120_fill_box_smart1_3.png)
Optimizing .NET solution architecture for faster compilation through project decoupling
![Optimizing .NET solution architecture for faster compilation through project decoupling](/optimizing-dotnet-solution-architecture-for-faster-compilation-through-project-decoupling/cover_huc4b64c39223431291f1deb763dccb9b0_3551515_120x120_fill_box_smart1_3.png)
Exploring the Microsoft Developer Control Plane at the heart of the new .NET Aspire
![Exploring the Microsoft Developer Control Plane at the heart of the new .NET Aspire](/exploring-microsoft-developer-control-plane-core-dotnet-aspire-dotnet-8/cover_hu07d10eea394fe82a2e853fa1d4ae0552_227517_120x120_fill_box_smart1_3.png)
Optimizing C# code analysis for quicker .NET compilation
![Optimizing C# code analysis for quicker .NET compilation](/optimizing-csharp-code-analysis-for-quicker-dotnet-compilation/cover_hu886a545ec889707b1535851e33d635b7_3657134_120x120_fill_box_smart1_3.png)
The only local MongoDB replica set with Docker Compose guide you'll ever need!
![The only local MongoDB replica set with Docker Compose guide you'll ever need!](/the-only-local-mongodb-replica-set-with-docker-compose-guide-youll-ever-need/cover_hu549a14bb602095313d9eba2b0c329da5_119315_120x120_fill_box_smart1_3.png)
Your own private ChatGPT in hours? Azure Chat makes it possible!
![Your own private ChatGPT in hours? Azure Chat makes it possible!](/your-own-private-chatgpt-with-azure-chat-and-openai-api/cover_hufbfc5e69fe6c84bd856aecfc46922d56_100597_120x120_fill_box_smart1_3.png)
Preventing breaking changes in .NET class libraries
![Preventing breaking changes in .NET class libraries](/preventing-breaking-changes-in-dotnet-class-libraries/cover_hu7d1aed9fcc59b29349b2f6d1ae683297_109546_120x120_fill_box_smart1_3.png)
The best C# REPL is in your terminal
![The best C# REPL is in your terminal](/the-best-csharp-repl-is-in-your-terminal/cover_hud2ba15e9300a37681dea3850e4d02a25_60122_120x120_fill_box_smart1_3.png)
Convert complex YAML to .NET types with custom YamlDotNet type converters
![Convert complex YAML to .NET types with custom YamlDotNet type converters](/yamldotnet-custom-type-converters/cover_huc96f9a9a30a070c3d3773aebe58da3b5_110594_120x120_fill_box_smart1_3.png)
Instrumenting System.CommandLine-based .NET applications
![Instrumenting System.CommandLine-based .NET applications](/system-commandline-instrumentation/cover_hu452a48056ac0df8cadfa7955a1fd08bb_59542_120x120_fill_q50_box_smart1.jpg)
Crafting beautiful interactive console apps with System.CommandLine and Spectre.Console
![Crafting beautiful interactive console apps with System.CommandLine and Spectre.Console](/beautiful-interactive-console-apps-with-system-commandline-and-spectre-console/cover_huba2537f5317c1d6ee986e8ce2da64e2d_80290_120x120_fill_box_smart1_3.png)
How to configure true dependency injection in System.CommandLine
![How to configure true dependency injection in System.CommandLine](/true-dependency-injection-with-system-commandline/cover_hu19e97298a2edbe611c9be2352198eb2c_93636_120x120_fill_box_smart1_3.png)
Even more .NET validation attributes with GSoft.ComponentModel.DataAnnotations
![Even more .NET validation attributes with GSoft.ComponentModel.DataAnnotations](/even-more-dotnet-validation-attributes/cover_hu0a76f4bb8e534d4a433c444b068c8e9a_72844_120x120_fill_box_smart1_3.png)
Prevent .NET Application Insights telemetry loss
![Prevent .NET Application Insights telemetry loss](/prevent-dotnet-application-insights-telemetry-loss/cover_hu79d01833c05840585beccdbb7a222727_621647_120x120_fill_box_smart1_3.png)
Modern minimal workers in .NET
![Modern minimal workers in .NET](/dotnet-minimal-workers/cover_hu0a2e77dc45516bff7670d314352689f3_101902_120x120_fill_box_smart1_3.png)
Generate a custom C# ChatGPT API client in minutes with Kiota
![Generate a custom C# ChatGPT API client in minutes with Kiota](/custom-csharp-chatgpt-client-with-kiota/cover_hu6473d8a24c951a1d4113a4fb6a987199_202752_120x120_fill_box_smart1_3.png)
Speeding up DefaultAzureCredential authentication in local development with Azure CLI
![Speeding up DefaultAzureCredential authentication in local development with Azure CLI](/defaultazurecredential-local-development-optimization/cover_hu711489b7092a4dc62a88c757e544eff9_262065_120x120_fill_box_smart1_3.png)
Take your .NET configuration to the next level with value substitution
![Take your .NET configuration to the next level with value substitution](/enhance-dotnet-configuration-with-value-substitution/cover_huba9b4318444a7a1d8c220f48482c8630_311033_120x120_fill_box_smart1_3.png)