Category: .NET Core
All posts about .NET Core and NDepend.
In the Jungle of .NET Obfuscator Tools
In this article I will explain our genuine experience with various .NET Obfuscator Tools. We end up explaining that .NET Reactor is the one we choose to obfuscate our code...
.NET Decompilers Compared: A Comprehensive Guide (2023)
Looking to reverse engineer or disassemble some .NET code? Then learning how to decompile .NET assemblies is a an essential skill for any .NET developer or security engineer. Fortunately, there...
5x Lessons Learned from Migrating a Large Legacy to .NET 5/6
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 own advice and have been migrated...
Debugging a .NET App on Linux from Windows Visual Studio with WSL
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 has been achieved to isolate code...
Migrating Delegate.BeginInvoke Calls to .NET Core, .NET 5 and .NET 6
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 and consequently in .NET 5, 6...
On replacing Thread.Abort() in .NET 6, .NET 5 and .NET Core
Thread.Abort() is not supported in .NET 5 / .NET Core We are actually migrating the NDepend analysis and reporting to .NET 5 and figured out that there is no equivalent...
Using C#9 record and init property in your .NET Framework 4.x, .NET Standard and .NET Core projects
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 that don’t require any change at...
Architecture of a C# game rendered with Blazor, Xamarin, UWP, WPF, and Winforms
When I wrote my last post Blazor Internals you need to know I came across this great project on github: AsteroidsWasm. This project is a remake in C# of the...
Blazor Internals you need to know
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 team develops it since 2017. Its...
Case Study : Complex UI Testing
In the previous post Case Study: 2 Simple Principles to achieve High Code Maintainability I explained that the principles layered code + high coverage ratio by test are 2 simple...
Case Study: 2 Simple Principles to achieve High Code Maintainability
High Code Maintainability is the key to make both the management and the developers happy: Maintainability lets a product evolves naturally at a sustained pace with controlled cost. Maintainability lets...
Don’t rely on someone else to protect your software
This morning I stumbled on this post Decompilation of C# code made easy with Visual Studio on the Visual Studio blog. Basically VS will soon be able to not only...
Not planning now to migrate your .NET 4.8 legacy, is certainly a mistake
2020 will see the achievement of the massive remodeling of the .NET platform initiated by Microsoft in November 2014 with the introduction of .NET Core 1, with the promise of...
4 Predictions for the Future of .NET
In May 2019, Microsoft officially announced .NET 5, the future of .NET: it will be based on all the .NET Core work already achieved. Here is the schedule announced: On...
.NET Core 3.0 New APIs
.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 the new APIs introduced since .NET...
Find API Breaking Changes in your .NET Libraries and Frameworks
If you are developing a framework, the last thing you want to happen when releasing a new version of your product is to break the code of your clients because...
SOLID Design: The Dependency Inversion Principle (DIP)
After having covered the Open-Close Principle (OCP), the Liskov Substitution Principle (LSP), the Single Responsibility Principle (SRP) and the Interface Segregation Principle (ISP) let’s talk about the Dependency Inversion Principle (DIP)...
Are SOLID principles Cargo Cult?
My last post about SOLID Design: The Single Responsibility Principle (SRP) generated some discussion on reddit. The discussion originated from a remark considering SOLID principles as a Cargo Cult. Taking...
SOLID Design: The Single Responsibility Principle (SRP)
After having covered The Open-Close Principle (OCP) and The Liskov Substitution Principle (LSP) let’s talk about the Single Responsibility Principle (SRP) which is the S in the SOLID acronym. The...
Identify .NET Code Structure Patterns with no Effort
The two pillars of code maintainability are automatic testing and clean code structure. Testing is used to regularly challenge code correctness and detect regression early. Testing can be easily assessed...
An in-depth analysis of .NET Core 3.0 support for WPF and Winforms APIs
.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 new APIs by comparing compiled bits...
Exploring .NET Core 3.0 new API
.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 the compiled bits. In this post...
Advanced Code Search : A Case Study
This morning I stumbled on a complex test to write. The need was to create and show a custom Form (written with Windows Form) that relies on the System.ComponentModel.BackgroundWorker to do...
A Look at .NET Core 2.1
The .NET Framework has certainly been through many changes since it was introduced by Microsoft in 2002. Arguably, .NET Core is the biggest change. First, .NET Core is open source....
Quickly assess your .NET code compliance with .NET Standard
Yesterday evening I had an interesting discussion about the feasibility of migrating parts of the NDepend code to .NET Standard to ultimately run it on .NET Core. We’re not yet...
A problem with extension methods
We like extension methods. When named accordingly they can both make the caller code clearer, and isolate static methods from classes on which they operate. But when using extension methods,...
Static analysis of .NET Core 2.0 applications
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 and .NET Standard 2.0 projects. .NET...