Les extraits proviennent d’une vidéo de Microsoft Developer qui présente une nouvelle façon de compiler et d’exécuter des fichiers C# directement sans avoir besoin d’un fichier projet traditionnel. L’approche vise à simplifier l’apprentissage du C# pour les débutants en leur permettant de commencer par écrire et exécuter du code simple immédiatement, à l’instar d’autres langages comme Node ou Python. La démonstration inclut l’exécution de fichiers simples, l’ajout de références de packages et même la création d’applications web et Razor en mode fichier unique. Enfin, le processus montre comment convertir facilement un fichier unique en un projet .NET standard lorsque le besoin se fait sentir.
Document de briefing : Simplification du développement C# avec exécution directe de fichiers
Source : Extraits de « No projects just C# with dotnet run app.cs | DEM518 »
Objectif Principal : Rendre l’apprentissage et le développement initial en C# plus accessibles et intuitifs en permettant l’exécution directe de fichiers .cs sans nécessiter un projet ou une structure de fichier complexe.
Thèmes Principaux et Idées Clés :
- Simplification de l’expérience des nouveaux utilisateurs :
- Problématique : L’expérience traditionnelle pour un nouveau développeur C# impliquait la création d’un projet (dotnet new console), ce qui générait une structure de dossiers, un fichier .csproj en XML, et un fichier Program.cs avec du « boilerplate » (modèle de code) non essentiel pour les premières étapes d’apprentissage (espaces de noms, classes, static, void, etc.). Cette complexité initiale était un obstacle à l’apprentissage.
- Citation clé : « there’s a lot going on here that isn’t actually the code that you want to introduce people to when they’re first starting C# »
- Solution : Introduire la possibilité d’écrire du code C# simple (par exemple, un Console.WriteLine(« Hello World »)
dans un seul fichier .cs et de l’exécuter directement.
- Exécution directe de fichiers .cs avec dotnet run <nom_fichier>.cs :
- Nouvelle fonctionnalité : La version .NET 10 preview 4 introduit la capacité d’exécuter directement un fichier C# à partir de la ligne de commande.
- Mécanisme : Au lieu de naviguer vers un dossier de projet et d’exécuter dotnet run, l’utilisateur peut simplement spécifier le fichier .cs à exécuter.
- Citation clé : « now what if I could just net run that file directly now this is the first time this is a brand new fe »
- Performance : Bien que la première exécution puisse prendre un peu plus de temps (due à l’échauffement), les exécutions suivantes sont beaucoup plus rapides.
- Citation clé : « Why did it take 3.6 seconds? We’re working on performance, this is literally the first version of this that works » et « It’s under a second now, that’s fantastic. »
- Gestion des dépendances et des packages avec des directives // ou #ignore (conceptuel) :
- Besoin : Même dans un simple fichier, les développeurs peuvent avoir besoin de référencer des packages NuGet.
- Solution : Une nouvelle syntaxe utilisant des directives spéciales (mentionnées comme #ignore ou hash colon) permet de spécifier des références de packages directement dans le fichier .cs.
- Mécanisme : Le SDK .NET est capable de lire ces directives, de restaurer le package nécessaire en arrière-plan et de rendre ses types disponibles dans le code.
- Exemple : Utilisation du package Humanizer pour rendre une durée plus lisible.
- Citation clé : « I can introduce or use something called an ignored directive… I can say I want a package and I know there’s a package called humanizer »
- Note : L’ajout d’une directive using pour les types du package reste nécessaire, offrant une « progressive disclosure » (divulgation progressive) des concepts.
- Prise en charge des Shebangs sur Linux/WSL :
- Fonctionnalité : Pour les environnements Linux et WSL, la fonctionnalité prend en charge l’utilisation de la directive shebang (#!) en début de fichier.
- Avantage : Permet de rendre un fichier .cs exécutable directement comme un script de shell (par exemple, ./hello.cs), en spécifiant l’interpréteur (dotnet).
- Conditions : Le fichier doit être marqué comme exécutable sur le système de fichiers Linux (chmod +x .cs) et ne doit pas contenir certains caractères ou formats de fin de ligne spécifiques à Windows.
- Citation clé : « in on Linux distros in these types of shells you can put a hash bang at the front of your file as long as it’s the first line »
- Prise en charge des arguments de ligne de commande :
- Fonctionnalité : L’exécution directe de fichiers .cs permet de passer des arguments à l’application, qui peuvent être accessibles via le paramètre args (un concept qui peut être introduit au besoin).
- Citation clé : « you can see now I’m using args new concept i can introduce that now rather than having it be there in the beginning of the file that I have to like they ignore that part i’ll get to that later »
- Alignement avec d’autres écosystèmes (Node, Python, Go, Rust) :
- Observation : D’autres langages de programmation populaires offrent déjà la possibilité d’exécuter des fichiers source directement.
- Positionnement : Cette nouvelle fonctionnalité permet à C# de rattraper son retard et d’offrir une expérience similaire aux développeurs venant d’autres plateformes ou pour des tâches de script rapides.
- Citation clé : « This isn’t new right if I’m over in Node land… you do node hello.js like that’s how it works how does it work in Python… even go has a facility for this even rust has a facility for doing this type of just run the file directly so we were kind of lagging behind but I’m very happy to say that we’re catching up in net 10 »
- Prise en charge d’applications plus complexes (Web APIs, applications Razor) :
- Capacité : La fonctionnalité n’est pas limitée aux simples applications console. Il est possible de créer et d’exécuter des applications web complètes (API Web, applications Razor/Blazor) sous forme de fichiers uniques.
- Mécanisme : L’utilisation de directives // ou #ignore pour spécifier le SDK (par exemple, Sdk=« Microsoft.NET.Sdk.Web ») et référencer les packages web nécessaires permet de faire fonctionner ces applications.
- Coexistence avec les fichiers de contenu : Pour les applications web (comme les applications Razor), les fichiers de contenu (comme les fichiers .razor) peuvent simplement être placés à côté du fichier d’entrée .cs.
- Citation clé : « What if I want to do a web application what other type of things would we have to support to let you build a web application well here’s a web API expressed as a single file with no project » et « I can just have Razer files next to my entry point file »
- Transition fluide vers les projets traditionnels :
- Situation : À mesure que les applications grandissent et nécessitent une organisation et des fonctionnalités plus avancées, les projets .NET deviennent nécessaires.
- Outil de conversion : Le SDK .NET 10 preview 4 introduit une commande (dotnet project convert .cs) qui prend un fichier .cs exécutable unique et le convertit automatiquement en structure de projet .NET standard (dossier, fichier .csproj, déplacement du code, conversion des directives de package en références de projet).
- Avantage : Permet un parcours d’apprentissage progressif. Les utilisateurs peuvent commencer avec des fichiers simples et passer aux projets sans avoir à « revenir en arrière » ou réapprendre les bases.
- Citation clé : « At some point you’re going to want a project… you get to a point where you need the flexibility you need the capabilities that projects afford but we don’t leave you in the lurch… you can just jump straight into the world of projects » et « I can say net project convert hello.cs and now just like that… now I have a project »
Appel à l’action :
- Télécharger .NET 10 preview 4.
- Utiliser l’extension C# pour Visual Studio Code (canaux de pré-version/insider pour la prise en charge immédiate de cette fonctionnalité).
- Expérimenter la fonctionnalité et fournir des commentaires à l’équipe .NET via le dépôt GitHub du SDK .NET.
En résumé : Cette nouvelle fonctionnalité dans .NET 10 vise à réduire la barrière à l’entrée pour les nouveaux développeurs C# et à simplifier les tâches de script ou de développement rapide en permettant l’exécution directe de fichiers .cs. Elle s’aligne sur les pratiques courantes dans d’autres écosystèmes et offre une voie claire et outillée pour la transition vers la structure de projet plus traditionnelle lorsque l’application évolue.