Fail Bitbucket Pipeline if .NET code is not formatted

Bitbucket pipeline failed with 'error WHITESPACE: Fix whitespace formatting. Delete 12 characters.' error from dotnet format

Correctly formatted code does not guarantee your codebase is of high quality, but the opposite is true: poorly formatted code almost always guarantees you are working with a bad, unprofessional codebase.

Even though you can probably get away with minor stylistic imperfections here and there in small projects, where only a few developers are working together, the bigger the team the more strict everyone should be about the codebase.

Not only does it make code easier to navigate and understand, but it also prevents merge conflicts and lays the foundation of high-quality code we all want to work with.

In this article we explore how we can fail bitbucket pipeline builds if there are formatting issues in .NET code and thus ensure our projects have only formatted code checked in.

>>> Continue reading <<<

.ConfigureAwait(false) in ASP.NET Core applications

Async code with ConfigureAwaitFalse

Using .ConfigureAwait(false) is considered good practice for asynchronous .NET Framework code in general and legacy ASP.NET in particular.

Sometimes people (and tools) insist on using .ConfigureAwait(false) in ASP.NET Core applications too.

The purpose of this article is to provide a set of useful links and quotes to show that .ConfigureAwait(false) does nothing in ASP.NET Core and therefore can be omitted in web applications utilizing modern .NET versions.

>>> Continue reading <<<

Multiple Swagger definitions in the same .NET project

Multiple service references added to the same project

A Swagger file is a json file containing API definition which allows you to consume an API without manually writing your own request/response classes or HttpClient code. Instead, you are getting an automatically generated typed client and corresponding classes.

Since Swagger file is an implementation of the OpenAPI standard, people can refer to it as OpenAPI file, definition or specification.

>>> Continue reading <<<

Nullable reference types and model binding in ASP.NET

Nullable reference type project setting in .NET

Nullable reference types - a comparatively new feature of C# which helps (to some extent) to deal with probably the most common bug - NullReferenceException . The feature was introduced in C# 8.0, and the main idea behind it is a new compiler analyzer which produces warnings if you try to access (or a better word - dereference) potentially nullable reference type.

For old projects you can enable this feature by adding <Nullable>enable</Nullable> line to .csproj file. For new ASP.NET projects this feature is enabled by default, but you can disable it by removing the corresponding line from .csproj.

>>> Continue reading <<<

'dotnet swagger tofile' command fails with 'incorrect runtime' error

openapi swagger swaggerui swashbuckle

I have come across a rather nasty bug: after a successful build of our ASP.NET 5 app, we generate a swagger file using Swashbuckle.AspNetCore.Cli tool with dotnet swagger tofile command. This is set up as a postbuild event. Unfortunately, it doesn’t work on my machine, but it does work completely fine on my colleague’s machine.

UDPATE (4/20/2024): if you encounter this error with .NET 8 - read my new post addressing this issue.

>>> Continue reading <<<