NDepend Blog

Improve your .NET code quality with NDepend

In the Jungle of .NET Obfuscator Tools

April 10, 2023 7 minutes read In this article I will explain our genuine experience with various .NET Obfuscator Tools. We end up explaining that .NET Reactor is the one...
NDepend April 10, 2023

.NET Build Improvement: Stop Wasting Resources

February 4, 2023 5 minutes read I am working on .NET development full-time since 2002 and there is a point that still annoys me after all these years: the default...
NDepend February 4, 2023

The NDepend GitHub Action is now available!

January 25, 2023 3 minutes read NDepend is a tool for .NET developers and teams that assesses the code quality within the IDE and the CI-CD process. With 17 years...
NDepend January 25, 2023

Deconstruction in C#

January 18, 2023 2 minutes read C# 7.0 introduced the deconstruction syntax. It allows developers to extract in a single expression, properties of an object or elements of a tuple...
NDepend January 18, 2023

The new .NET 7.0 IParsable<TSelf> interface

November 21, 2022 3 minutes read As I explained in the post C# 11 static abstract members, C# 11 let’s write static abstract members in interface. This feature was mostly...
NDepend November 21, 2022

C# 11 required members

November 15, 2022 3 minutes read C# 11 proposes the new keyword required that can apply to an instance property or an instance field declaration within a class, a record...
NDepend November 15, 2022

C# 11 File Scoped Types

October 27, 2022 4 minutes read C#11 added the file scoped types feature: a new file modifier that can be applied to any type definition to restrict its usage to...
NDepend October 27, 2022

Managed pointers, Span, ref struct, C#11 ref fields and the scoped keyword

October 25, 2022 9 minutes read The concept of managed pointer exists in the NET runtime and C# since the inception of the platform in the early 2000. Managed pointers...
NDepend October 25, 2022

C# 11 Raw String Literals Explained

August 25, 2022 3 minutes read C# 11 introduces Raw String Literals. Undoubtedly this feature will become very popular because it represents an elegant way to solve some issues with...
NDepend August 25, 2022

Visual Studio vs. Jetbrains Rider Performance

June 28, 2022 5 minutes read I work daily with Visual Studio since 1997 but still use Rider from time to time to keep up with progresses since we plan...
NDepend June 28, 2022

C# 11 static abstract members

June 14, 2022 5 minutes read C# 11 proposed interface members declared as static abstract. This is useful to handle both: Polymorphism at the type level, for example when abstracting...
NDepend June 14, 2022

WPF / Winforms UI Refactoring: A Case Study

May 11, 2022 4 minutes read WPF and Winforms are still so massively used that Microsoft fully supports those technologies in .NET Core, .NET 5, 6 , 7 and so...
NDepend May 11, 2022

C# Pattern Matching Explained

April 4, 2022 6 minutes read Since the C# version 7, C# has support for pattern matching. C# pattern matching is here to simplify complex if-else statements into more compact...
NDepend April 4, 2022

How to collect return values from Parallel.ForEach?

January 26, 2022 1 minutes read Today I took 10 minutes to answer the 9 years old stackoverflow’s question: How do I collect return values from Parallel.ForEach? I though the...
NDepend January 26, 2022

C# Binary Search: Fast find of a free slot between 0 and uint.MaxValue

January 3, 2022 2 minutes read When a user is exporting a result to a document with NDepend, the tool needs to find a file name not taken in the...
NDepend January 3, 2022

Modern C# Hello World

November 23, 2021 6 minutes read With Visual Studio 2022 when you create a new console project based on .NET 6, the Hello World source code generated is now as...
NDepend November 23, 2021

Solution to Visual Studio 2022 messing up Visual Studio 2019

November 10, 2021 3 minutes read As all .NET developers I am quite excited by Visual Studio 2022 and .NET 6 going RTM. However I noticed that Visual Studio 2022...
NDepend November 10, 2021

5x Lessons Learned from Migrating a Large Legacy to .NET 5/6

October 26, 2021 9 minutes read In January 2020 I wrote the post Not planning now to migrate your .NET 4.8 legacy, is certainly a mistake. Hopefully we followed our...
NDepend October 26, 2021

Debugging a .NET App on Linux from Windows Visual Studio with WSL

September 15, 2021 6 minutes read NDepend analysis, reporting, API and Power-Tools will run on Linux and MacOS with the next version 2021.2. To achieve that, a major refactoring session...
NDepend September 15, 2021

Code Testability: A Case Study

September 1, 2021 2 minutes read [crayon-65d7dfdedc08a602448549/] This method is untestable because its logic depends on NdpOperatingSystem.Kind which returns an OSPlatform object. Notice the usage of the attribute UncoverableByTest that...
NDepend September 1, 2021

3 productivity Resharper features missing in Visual Studio

August 10, 2021 5 minutes read Resharper is a great Visual Studio productivity extension but on the other hand it slows down significantly the IDE, especially when working with large...
NDepend August 10, 2021

What is Code Review? – Guidelines and Best Practices

July 19, 2021 9 minutes read Code review is the process of mandating systematically one or several developers to review the code written by another developer in other to detects...
NDepend July 19, 2021

Top 10 New .NET 6.0 API

July 7, 2021 5 minutes read .NET 6 introduces new handy APIs that will make our development journey easier. Let’s go through the top 10 new API in terms of...
NDepend July 7, 2021

How to Logically Name Embedded Resources in .csproj?

June 16, 2021 1 minutes read You can work with .NET for two decades and still discover some useful stuff.  One thing that bothered me till now is that an...
NDepend June 16, 2021

Migrating Delegate.BeginInvoke Calls to .NET Core, .NET 5 and .NET 6

May 26, 2021 3 minutes read In this 2019 post, the .NET Base Class Library engineers announced that the good old Delegate.BeginInvoke .NET Framework syntax wasn’t supported in .NET Core...
NDepend May 26, 2021

On replacing Thread.Abort() in .NET Core

May 19, 2021 3 minutes read Thread.Abort() is not supported in .NET 5 / .NET Core We are actually migrating the NDepend analysis and reporting to .NET 5 and figured...
NDepend May 19, 2021

Visual Studio 2022 64 bits: Elements of history

May 11, 2021 7 minutes read Finally after all these years of waiting Visual Studio 2022 will run in a 64 bits process on 64 bits machines! As a consequence...
NDepend May 11, 2021

Covariance and Contravariance in C# Explained

May 4, 2021 6 minutes read Introduction Covariance and contravariance allow more flexibility when dealing with C# class hierarchy. This article explains and demonstrates the concepts of Covariance and Contravariance...
NDepend May 4, 2021

Clean Architecture Refactoring: A Case Study

April 27, 2021 9 minutes read Introduction to Clean Architecture The recent post Clean Architecture for ASP.NET Core Solution: A Case Study explained that one of the most interesting property...
NDepend April 27, 2021

Hungarian Notation for Fields in C#

April 21, 2021 6 minutes read If there is one topic that divides the C# developers community, it is the Hungarian notation for fields. In our team we rely on...
NDepend April 21, 2021