Accueil

Semantic API Roslyn pour les Source Generators (Code Gen)

La Semantic API de Roslyn complète la Syntax API en donnant accès à la compréhension “sémantique” du code : types réels, symboles, héritage, interfaces implémentées, attributs résolus, etc. Dans un Source Generator, c’est elle qui permet de passer d’un simple nœud de syntaxe à un modèle riche sur lequel baser la génération de code.

Dans cet article, on va voir :

  • ce qu’est un SemanticModel ;
  • comment obtenir des ISymbol (types, méthodes, propriétés) à partir de la syntaxe ;
  • comment lire les attributs et types effectifs ;
  • comment utiliser efficacement la Semantic API dans un générateur incrémental.

Lire la suite

Syntax API Roslyn pour les Source Generators (Code Gen)

La Syntax API de Roslyn est le point d’entrée bas niveau pour analyser le code C# dans un Source Generator. Elle permet de parcourir l’arbre de syntaxe (AST) des fichiers .cs pour repérer les éléments qui vous intéressent (attributs, classes, méthodes…) avant de générer du code.

Dans cet article, on va voir :

  • ce qu’est un arbre de syntaxe ;
  • comment utiliser un ISyntaxReceiver (générateurs classiques) ;
  • comment retrouver les symboles à partir de la syntaxe ;
  • comment aborder la Syntax API dans un générateur incrémental.

Lire la suite

Source Generators en .NET (Code Gen)

Les Source Generators sont une fonctionnalité introduite avec .NET 5 et C# 9 qui permet de générer du code C# à la compilation, à partir du code existant. Contrairement aux outils de génération de code “hors bande” (T4, scripts, etc.), les source generators s’intègrent directement au compilateur Roslyn et fonctionnent de manière transparente dans Visual Studio, Rider ou VS Code.

Ils sont particulièrement utiles pour :

  • Éviter le code répétitif (boilerplate).
  • Générer du code optimisé à partir de métadonnées (attributs, fichiers JSON, etc.).
  • Fournir de l’intellisense et des diagnostics au moment de l’écriture du code.

Lire la suite

Cibler plusieurs frameworks .NET dans un même projet

Lorsqu’une bibliothèque doit être utilisable par plusieurs types d’applications (.NET Framework, .NET Core, .NET moderne, etc.), il est possible de cibler plusieurs frameworks .NET dans un même projet. Cette technique est appelée multi‑ciblage (multi‑targeting).

L’idée est simple : un seul projet .csproj, plusieurs frameworks cibles, et le SDK .NET génère un assembly par framework.

Lire la suite

Évolution du schéma et versionning en CQRS (cqrs 6/6)

Dans un système CQRS, le modèle d’écriture, les modèles de lecture et, le cas échéant, les événements d’Event Sourcing évoluent dans le temps ; il faut donc faire progresser le schéma et les contrats (commands, events, read models) sans casser les agrégats existants, les projections ni les consommateurs externes, en combinant versionning, migrations et reconstructions contrôlées.

Lire la suite

CQRS et Event Sourcing (cqrs 5/6)

La combinaison de CQRS et d’Event Sourcing consiste à séparer lecture et écriture tout en conservant, côté écriture, l’historique complet des événements qui construisent les agrégats ; les mêmes événements alimentent ensuite des projections pour bâtir des modèles de lecture optimisés, avec à la clé auditabilité, rejouabilité et vues multiples au prix d’une complexité accrue.

Lire la suite