NDepend Blog

Improve your .NET code quality with NDepend

High .NET Code Maintainability: A Case Study

February 13, 2024 8 minutes read High .NET Code Maintainability is the key to achieve both happy management and happy developers: Maintainability lets a product evolve naturally at a sustained...
NDepend February 13, 2024

WPF vs WinForms – Making the Right Decision in 2024

January 12, 2024 7 minutes read If you’re a developer faced with the decision of selecting between Windows Presentation Foundation (WPF) and Windows Forms (WinForms) commonly referred to as WPF...
NDepend January 12, 2024

.NET – 7 Decompiler Compared (2024)

January 10, 2024 9 minutes read Looking to reverse engineer or disassemble some .NET code? Then learning how to decompile .NET assemblies is an essential skill for any .NET developer...
NDepend January 10, 2024

SOLID Design in C#: The Single Responsibility Principle (SRP)

November 9, 2023 7 minutes read The Single Responsibility Principle (SRP) is one of the five essential SOLID design principles. These principles are guidelines for the proper usage of object-oriented features....
NDepend November 9, 2023

SOLID Design in C#: The Dependency Inversion Principle (DIP) with Examples

November 8, 2023 8 minutes read The Dependency Inversion Principle (DIP) is one of the five essential SOLID design principles. These principles are guidelines for the proper usage of object-oriented...
NDepend November 8, 2023

Clean Architecture in ASP.NET Core

October 20, 2023 9 minutes read The Clean Architecture approach has gained significant popularity for the design and development of software applications, emphasizing key principles such as maintainability, testability, and...
NDepend October 20, 2023

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

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

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

Using C#9 record and init property in your .NET Framework 4.x, .NET Standard and .NET Core projects

November 25, 2020 2 minutes read C#9 record and C#9 init property are really nice addition to the language. As explained in C#9 records: immutable classes, both are syntactic sugar...
NDepend November 25, 2020

Architecture of a C# game rendered with Blazor, Xamarin, UWP, WPF, and Winforms

September 15, 2020 5 minutes read When I wrote my last post Blazor Internals you need to know I came across this great project on github: AsteroidsWasm. This project is...
NDepend September 15, 2020

Blazor Internals you need to know

September 3, 2020 9 minutes read Lately the Blazor technology received a lot of attention both from Microsoft and from the .NET community. Blazor is a UI technology. The ASP.NET...
NDepend September 3, 2020

Case Study : Complex UI Testing

April 29, 2020 6 minutes read In the previous post Case Study: 2 Simple Principles to achieve High Code Maintainability I explained that the principles layered code + high coverage...
NDepend April 29, 2020

Don’t rely on someone else to protect your software

February 20, 2020 4 minutes read This morning I stumbled on this post Decompilation of C# code made easy with Visual Studio on the Visual Studio blog. Basically VS will...
NDepend February 20, 2020

Not planning now to migrate your .NET 4.8 legacy, is certainly a mistake

January 16, 2020 4 minutes read 2020 will see the achievement of the massive remodeling of the .NET platform initiated by Microsoft in November 2014 with the introduction of .NET...
NDepend January 16, 2020

4 Predictions for the Future of .NET

October 8, 2019 6 minutes read In May 2019, Microsoft officially announced .NET 5, the future of .NET: it will be based on all the .NET Core work already achieved....
NDepend October 8, 2019

.NET Core 3.0 New APIs

September 25, 2019 2 minutes read .NET Core 3.0 has just been released, see here the official announcement. In this post we’re going to explain how to list and explore...
NDepend September 25, 2019

Find API Breaking Changes in your .NET Libraries and Frameworks

September 24, 2019 3 minutes read If you are developing a framework, the last thing you want to happen when releasing a new version of your product is to break...
NDepend September 24, 2019

Are SOLID principles Cargo Cult?

August 13, 2019 6 minutes read My last post about SOLID Design: The Single Responsibility Principle (SRP) generated some discussion on reddit. The discussion originated from a remark considering SOLID...
NDepend August 13, 2019

Identify .NET Code Structure Patterns with no Effort

July 16, 2019 7 minutes read The two pillars of code maintainability are automatic testing and clean code structure. Testing is used to regularly challenge code correctness and detect regression...
NDepend July 16, 2019

An in-depth analysis of .NET Core 3.0 support for WPF and Winforms APIs

February 28, 2019 5 minutes read .NET Core 3.0 will be RTM soon and it supports WPF and Winforms APIs. In my last post I’ve been exploring .NET Core 3.0...
NDepend February 28, 2019

Exploring .NET Core 3.0 new API

February 21, 2019 9 minutes read .NET Core 3.0 is representing a major step for the .NET community. It is interesting to analyze what’s new in the API directly from...
NDepend February 21, 2019

Advanced Code Search : A Case Study

January 16, 2019 3 minutes read This morning I stumbled on a complex test to write. The need was to create and show a custom Form (written with Windows Form)...
NDepend January 16, 2019

A Look at .NET Core 2.1

May 8, 2018 6 minutes read The .NET Framework has certainly been through many changes since it was introduced by Microsoft in 2002. Arguably, .NET Core is the biggest change....
Erik Dietrich May 8, 2018

Quickly assess your .NET code compliance with .NET Standard

April 19, 2018 4 minutes read Yesterday evening I had an interesting discussion about the feasibility of migrating parts of the NDepend code to .NET Standard to ultimately run it...
NDepend April 19, 2018

A problem with extension methods

November 13, 2017 2 minutes read We like extension methods. When named accordingly they can both make the caller code clearer, and isolate static methods from classes on which they...
NDepend November 13, 2017

Static analysis of .NET Core 2.0 applications

October 12, 2017 3 minutes read NDepend v2017.3 has just been released with major improvements. One of the most requested features, now available, is the support for analyzing .NET Core 2.0...
NDepend October 12, 2017