Qu'est-ce que le format de fichier CSPROJ ?
Les fichiers avec l'extension .csproj sont des fichiers de projet C# appartenant à la catégorie des fichiers de développement.
Que contiennent les fichiers .csproj ?
Le contenu des fichiers .csproj comprend les paramètres de build pour les projets écrits en C#. Ils sont générés par Microsoft Visual Studio ou les outils en ligne de commande du .NET SDK lors de la création d'un nouveau projet. Les informations suivantes se trouvent dans les fichiers .csproj :
- le nom du projet et le type de sortie (exécutable ou bibliothèque de classes),
- les références aux fichiers du projet, les dépendances aux paquets NuGet (
<PackageReference>), et d'autres références de projet, - les paramètres de compilation et le framework cible (par ex.
net9.0ounet48), - les métadonnées d'assemblage telles que les numéros de version et les informations sur l'auteur.
Le contenu des fichiers .csproj est écrit à l'aide du balisage XML. Les projets modernes utilisent le format compact de style SDK, introduit avec .NET Core et Visual Studio 2017, qui s'ouvre par <Project Sdk="Microsoft.NET.Sdk"> et ne fait généralement que quelques lignes - les fichiers .cs sources sont détectés automatiquement via un balayage implicite (globbing). Les anciens projets hérités (avant 2017) utilisent un format plus verbeux avec une déclaration de namespace explicite xmlns="http://schemas.microsoft.com/developer/msbuild/2003" et listent chaque fichier source individuellement.
À quoi servent les fichiers .csproj ?
Avec les fichiers .csproj, on peut stocker tous les paramètres de build de projets souvent très complexes - pouvant consister en plusieurs centaines de fichiers sources et dépendances externes - dans un seul document. Le moteur de build MSBuild (ou la commande CLI dotnet build) lit le .csproj pour compiler le projet. Les informations contenues dans les fichiers .csproj garantissent également un comportement cohérent sur différentes machines et environnements CI, éliminant le besoin de fournir des paramètres de compilation à chaque fois. Un ou plusieurs projets .csproj sont regroupés par un fichier de solution (.sln ou le plus récent .slnx).
Notez que le .csproj lui-même ne contient aucun code source - tout le code C# réside dans les fichiers .cs séparés qu'il référence.
Puis-je ouvrir les fichiers .csproj ?
Les fichiers .csproj sont générés automatiquement après avoir sélectionné l'option de création d'un nouveau projet. Comme ils sont écrits en XML, même l'éditeur de texte le plus simple comme Notepad suffit pour les visualiser ou les éditer. Cependant, il convient de rappeler que la syntaxe XML peut être impitoyable - sans nécessité claire, les modifications manuelles des fichiers .csproj sont déconseillées. Des changements inconsidérés dans leur contenu peuvent entraîner des incohérences entre les éléments du projet, provoquant des problèmes d'ouverture du projet dans Visual Studio ou d'autres outils de développement.
Sécurité et sûreté
RISQUE : MEDIUMLe fichier .csproj lui-même est du XML brut et sans danger à lire. Le risque réel survient lors du BUILD ou du RESTORE : un projet C# peut exécuter des cibles MSBuild, des scripts pré/post-build, la restauration de paquets NuGet (qui peut exécuter des scripts d'installation), des générateurs de source et le code compilé lors du débogage/exécution - ainsi, ouvrir un projet non fiable et appuyer sur Build/Run peut exécuter du code arbitraire. Visual Studio affiche un avertissement de confiance pour les projets téléchargés exactement pour cette raison. Inspectez les cibles, les références de paquets et les scripts d'un .csproj inconnu avant de compiler, et ne compilez pas de code en lequel vous n'avez pas confiance.
Détails du format
en brefProgrammes qui ouvrent les fichiers CSPROJ
Détails techniques
spécifications approfondies| Structure du fichier | XML avec un élément racine <Project> contenant des éléments enfants <PropertyGroup>, <ItemGroup>, et optionnellement <Target> |
| Variantes de format de projet | Style SDK (depuis .NET Core / VS 2017) : compact, utilise l'attribut Sdk et le globbing *.cs implicite. Hérité (full-framework) : verbeux, liste chaque fichier source explicitement, schéma xmlns 2003 |
| Attribut SDK | <Project Sdk="Microsoft.NET.Sdk"> ouvre chaque projet moderne de style SDK ; les variantes incluent Microsoft.NET.Sdk.Web (ASP.NET Core) et Microsoft.NET.Sdk.Worker |
| Déclaration du framework cible | L'élément <TargetFramework> spécifie la cible de compilation (par ex. net9.0, net48, netstandard2.0) ; <TargetFrameworks> (séparés par des points-virgules) permet le multi-ciblage dans un seul fichier |
| Déclaration de dépendance NuGet | Éléments <PackageReference Include="NomPaquet" Version="x.y.z" /> à l'intérieur d'un <ItemGroup> ; remplace l'ancienne approche packages.config |
| Références de projet à projet | Éléments <ProjectReference Include="../Autre/Autre.csproj" /> ; MSBuild résout automatiquement l'ordre de build et le graphe de dépendances |
| Inclusion de fichiers sources (style SDK) | Implicite - tous les fichiers *.cs sous le répertoire du projet sont compilés automatiquement sans entrées <Compile> explicites |
| Types de sortie | Exe (application console), WinExe (GUI Windows), Library (bibliothèque de classes ou paquet NuGet) ; défini via la propriété <OutputType> |
| Moteur de build | MSBuild - invoqué directement ou via dotnet build, dotnet run, et dotnet publish depuis le CLI du .NET SDK |
| Encodage du texte | Texte brut UTF-8 ; pas de signature binaire ou d'octets magiques ; le BOM est optionnel et omis dans la plupart des outils modernes |
| Taille typique du fichier | Moins de 1 Ko pour les projets de style SDK ; jusqu'à ~50 Ko pour les grands projets hérités avec de nombreuses entrées de fichiers explicites |
| Type MIME | application/xml (également accepté comme text/xml ou text/plain) |
| Fichier compagnon | .csproj.user stocke les paramètres IDE locaux par utilisateur (par ex. arguments de lancement du débogage) et ne doit pas être commité dans le contrôle de version |
| Groupement de solutions | Un ou plusieurs projets .csproj sont combinés dans un fichier de solution .sln ou le plus récent .slnx pour les builds IDE et CLI multi-projets |
| Formats de projet homologues | .vbproj (Visual Basic .NET) et .fsproj (F#) utilisent le même schéma XML MSBuild et peuvent coexister dans la même solution |
| Publié | 2002 (Visual Studio .NET / .NET Framework 1.0) |
| Dernière version | SDK-style project format (since .NET Core / VS 2017, 2017); current with .NET 9 (2024) |
| Standard ouvert | Oui · libre de droits |
| Spécification | learn.microsoft.com |
Conversions CSPROJ
Q&R de la communauté
posées par les utilisateursPas encore de questions - soyez le premier à poser une question sur les fichiers CSPROJ.