Embeded languages in string values supported by Roslyn

 
 
  • Gérald Barré
In a recent post, I shared how to highlight C# code in string values. Roslyn provides more built-in highlighters / code-completions in string values. Most of the supported languages are available as constants of the StringSyntaxAttribute class. To indicate the language, you can use the lang or language comment or the [StringSyntax] attribute. The languages mentioned in this post are handled by Roslyn (VS,… [read more]

Listing all cloud folders in Windows using .NET

 
 
  • Gérald Barré
Windows allows to list the OneDrive folders or folders from other cloud providers. This is done by using the StorageProviderSyncRootManager class. The StorageProviderSyncRootManager class provides a static method called GetCurrentSyncRoots that returns a list of StorageProviderSyncRoot objects, which correspond to the registered cloud folders. Before using the Windows SDK, you need to update the Target… [read more]

How to remove diacritics from a string in .NET

 
 
  • Gérald Barré
Diacritics are a way to add additional information to a character. They are used in many languages, such as French, Spanish, and German. A common usage of diacritics is to add an accent to a letter (e.g. é). In this post, I describe how to remove diacritics from a string in .NET. In the post , I already wrote about diacritics. But let give a quick reminder. A diacritic is a glyph added to a letter. For… [read more]

Understanding OverloadResolutionPriority attribute in C# 13

 
 
  • Gérald Barré
C# 13 adds support for a new attribute: [OverloadResolutionPriority]. This attribute is niche, so most of you won't use it. However, it's a nice addition to the language, and it's worth knowing about it if you are writing libraries. Let's consider this simple example: Sample.Test(); // Print: Test 1 static class Sample { public static void Test() => Console.WriteLine("Test 1"); } Now, you want to update… [read more]

Disabling HSTS for localhost using a browser extension

 
 
  • Gérald Barré
 
Http Strict Transport Security (HSTS) is a security mechanism that instructs the browser to automatically redirect http requests to https before sending a request to the server. When you are developing a web application, you should disable HSTS for localhost. This is because enabling HSTS on localhost has implications for other applications. For instance, some applications start a local web server and… [read more]

Using Mutex<T> to synchronize access to a shared resource

 
 
  • Gérald Barré
When you need to access a shared resource, you can use the lock statement or a synchronization primitive such as a Mutex to synchronize access to the resource. However, it's easy to forget it in complex code. When you need to synchronize access to a single resource, you can use a var obj = new object(); var value = 42; lock (obj) { // You need to ensure you use lock everywhere you access the shared… [read more]

Waiting for a ManualResetEventSlim to be set asynchronously

 
 
  • Gérald Barré
ManualResetEventSlim represents a thread synchronization event that, when signaled, must be reset manually. This is a common synchronization primitive. However, it doesn't expose a method to wait asynchronously. Hopefully, it's not too complicated to create an extension method using ThreadPool.RegisterWaitForSingleObject and TaskCompletionSource. static class Extensions { public static Task WaitAsync(this… [read more]