Skip to main content

Configuration d’un projet C# (.NET) pour GitHub Codespaces

Commencez avec un projet C# (.NET) dans GitHub Codespaces en créant une configuration de conteneur de développement personnalisée.

Introduction

Ce tutoriel vous montre comment configurer un exemple de projet C# (.NET) dans GitHub Codespaces avec le client web Visual Studio Code. Il vous guidera dans le processus d’ouverture du projet dans un codespace, d’ajout et de modification d’une configuration de conteneur de dĂ©veloppement prĂ©dĂ©finie.

Une fois ce tutoriel terminĂ©, vous serez en mesure d’ajouter une configuration de conteneur de dĂ©veloppement Ă  votre propre dĂ©pĂŽt Ă  l’aide du client web VS Code ou de l’application de bureau VS Code.

Pour plus d’informations sur les conteneurs de dĂ©veloppement, consultez PrĂ©sentation des conteneurs de dĂ©veloppement.

Étape 1 : Ouvrir le projet dans un codespace

  1. Connectez-vous Ă  GitHub.com, si ce n’est dĂ©jĂ  fait.

  2. Accédez à https://github.com/microsoft/vscode-remote-try-dotnet.

  3. Cliquez sur Utiliser ce modĂšle, puis sur Ouvrir dans un codespace.

    Capture d’écran du bouton « Utiliser ce modĂšle Â» et du menu dĂ©roulant dĂ©veloppĂ© pour afficher l’option « Ouvrir dans un codespace Â».

Lorsque vous crĂ©ez un codespace, votre projet est créé sur une machine virtuelle distante qui vous est dĂ©diĂ©e. Par dĂ©faut, le conteneur de votre codespace comporte de nombreux langages et runtimes, dont .NET. Il inclut Ă©galement un ensemble commun d’outils tels que git, wget, rsync, openssh et nano.

Vous pouvez personnaliser votre codespace en ajustant le nombre de processeurs virtuels et la RAM, en ajoutant des dotfiles pour personnaliser votre environnement, ou en modifiant les outils et les scripts installĂ©s. Pour plus d’informations, consultez « Personnalisation de votre codespace Â».

GitHub Codespaces utilise un fichier appelé devcontainer.json pour configurer le conteneur de développement que vous utilisez lorsque vous travaillez dans un codespace. Chaque dépÎt peut contenir un ou plusieurs fichiers devcontainer.json, afin de vous fournir exactement l'environnement de développement dont vous avez besoin pour travailler sur votre code dans un espace de code.

Lors du lancement, GitHub Codespaces utilise un fichier devcontainer.json, ainsi que tous les fichiers dĂ©pendants qui composent la configuration du conteneur de dĂ©veloppement, pour installer des outils et des runtimes, et effectuer d’autres tĂąches de configuration nĂ©cessaires au projet. Pour plus d’informations, consultez « PrĂ©sentation des conteneurs de dĂ©veloppement Â».

Étape 2 : Ajouter une configuration de conteneur de dĂ©veloppement

Le conteneur de dĂ©veloppement par dĂ©faut, ou « conteneur dev Â», de GitHub Codespaces est fourni avec la derniĂšre version de .NET, et les outils les plus courants y sont prĂ©installĂ©s. Toutefois, nous vous recommandons de configurer votre propre conteneur de dĂ©veloppement afin d’inclure tous les outils et scripts dont votre projet a besoin. Cela garantit un environnement entiĂšrement reproductible pour tous les utilisateurs GitHub Codespaces de votre rĂ©fĂ©rentiel.

Pour configurer votre dĂ©pĂŽt afin d’utiliser un conteneur de dĂ©veloppement personnalisĂ©, vous devez crĂ©er un ou plusieurs fichiers devcontainer.json. Vous pouvez les ajouter Ă  partir d’un modĂšle de configuration prĂ©dĂ©fini, dans Visual Studio Code, oĂč Ă©crire les vĂŽtres. Pour plus d’informations sur les configurations de conteneur de dĂ©veloppement, consultez PrĂ©sentation des conteneurs de dĂ©veloppement.

  1. AccĂ©dez Ă  la Visual Studio Code Command Palette (Maj+Commande+P / Ctrl+Maj+P), puis commencez Ă  taper « ajouter Â». Cliquez sur Codespaces : ajouter des fichiers config de conteneur de dĂ©veloppement.

    Capture d’écran de la palette de commandes, avec « ajouter Â» entrĂ© et « Codespaces : ajouter des fichiers config de conteneur de dĂ©veloppement Â» listĂ©.

  2. Cliquez sur Créer une nouvelle configuration.

  3. Dans cet exemple, le dĂ©pĂŽt de modĂšles Ă  partir duquel vous avez créé le codespace contient dĂ©jĂ  une configuration de conteneur de dĂ©veloppement, donc un message s’affiche vous indiquant que le fichier de configuration existe dĂ©jĂ . Nous allons remplacer le fichier de configuration existant, donc cliquez sur Continuer.

  4. Cliquez sur Afficher toutes les définitions.

    Capture d’écran du menu dĂ©roulant « Ajouter des fichiers de configuration de conteneur de dĂ©veloppement Â» montrant diffĂ©rentes options, notamment « Afficher toutes les dĂ©finitions Â».

  5. Tapez c# et cliquez sur C# (.NET) . D’autres options sont disponibles si votre projet utilise des outils particuliers. Par exemple, C# et MS SQL.

    Capture d’écran de la liste dĂ©roulante « Ajouter des fichiers config de conteneur de dĂ©veloppement Â» avec « c# Â» entrĂ© dans le champ de recherche et plusieurs options C# rĂ©pertoriĂ©es ci-dessous.

  6. Choisissez la version de .NET que vous souhaitez utiliser pour votre projet. Dans ce cas, sĂ©lectionnez la version marquĂ©e « (par dĂ©faut) Â».

    Capture d’écran de la liste dĂ©roulante « Ajouter des fichiers config de conteneur de dĂ©veloppement », montrant diverses versions de .NET, y compris « 7.0 (par dĂ©faut) ».

  7. Une liste de fonctionnalitĂ©s supplĂ©mentaires s’affiche. Nous allons installer l’interface CLI .NET, interface de ligne de commande pour dĂ©velopper, crĂ©er, exĂ©cuter et publier des applications .NET. Pour installer cet outil, tapez dotnet, sĂ©lectionnez Dotnet CLI et cliquez sur OK.

    Capture d’écran de la liste dĂ©roulante « Ajouter des fichiers config de conteneur de dĂ©veloppement », montrant « dotnet » dans la zone de texte et « Dotnet CLI » dans la liste dĂ©roulante.

  8. Un message s’affiche pour vous indiquer que le fichier de configuration du conteneur de dĂ©veloppement existe dĂ©jĂ . Cliquez sur Remplacer.

    Un fichier devcontainer.json est créé et ouvert dans l’éditeur.

Détails de votre configuration de conteneur de développement personnalisée

Si vous regardez dans l’Explorateur Visual Studio Code, vous verrez qu’un rĂ©pertoire .devcontainer a Ă©tĂ© ajoutĂ© Ă  la racine du dĂ©pĂŽt de votre projet contenant le fichier devcontainer.json. Il s’agit du fichier de configuration principal pour les codespaces créés Ă  partir de ce dĂ©pĂŽt.

devcontainer.json

Le fichier devcontainer.json que vous avez ajoutĂ© contient des valeurs pour les propriĂ©tĂ©s name, image et features. D’autres propriĂ©tĂ©s que vous trouverez peut-ĂȘtre utiles sont incluses, mais sont commentĂ©es.

Le fichier ressemblera Ă  ceci, en fonction de l’image que vous avez choisie :

// For format details, see https://aka.ms/devcontainer.json. For config options, see the
// README at: https://github.com/devcontainers/templates/tree/main/src/dotnet
{
  "name": "C# (.NET)",
  // Or use a Dockerfile or Docker Compose file. More info: https://containers.dev/guide/dockerfile
  "image": "mcr.microsoft.com/devcontainers/dotnet:0-7.0",
  "features": {
    "ghcr.io/devcontainers/features/dotnet:1": {}
  }

  // Features to add to the dev container. More info: https://containers.dev/features.
  // "features": {},

  // Use 'forwardPorts' to make a list of ports inside the container available locally.
  // "forwardPorts": [5000, 5001],
  // "portsAttributes": {
  //   "5001": {
  //     "protocol": "https"
  //   }
  // }

  // Use 'postCreateCommand' to run commands after the container is created.
  // "postCreateCommand": "dotnet restore",

  // Configure tool-specific properties.
  // "customizations": {},

  // Uncomment to connect as root instead. More info: https://aka.ms/dev-containers-non-root.
  // "remoteUser": "root"
}
  • name : Vous pouvez appeler votre conteneur de dĂ©veloppement comme vous voulez. Une valeur par dĂ©faut est fournie.
  • image : Nom d’une image dans un registre de conteneurs (DockerHub, GitHub Container registry ou Azure Container Registry) qui sera utilisĂ©e pour crĂ©er le conteneur de dĂ©veloppement pour le codespace.
  • features : Liste d’un ou plusieurs objets, chacun faisant rĂ©fĂ©rence Ă  l’une des fonctionnalitĂ©s de conteneur de dĂ©veloppement disponibles. Les fonctionnalitĂ©s (« features Â») sont des unitĂ©s autonomes pouvant ĂȘtre partagĂ©es du code d’installation et de configuration de conteneur de dĂ©veloppement. Elles offrent un moyen simple d’ajouter d’autres fonctionnalitĂ©s d’outils, de runtime ou de bibliothĂšque Ă  votre conteneur de dĂ©veloppement. Vous pouvez ajouter des fonctionnalitĂ©s soit dans VS Code, soit dans l’éditeur devcontainer.json sur GitHub. Pour plus d’informations, cliquez sur l’onglet Visual Studio Code ou Navigateur web dans Ajout de fonctionnalitĂ©s Ă  un fichier devcontainer.json.
  • forwardPorts : Tous les ports listĂ©s ici sont transfĂ©rĂ©s automatiquement. Pour plus d’informations, consultez « Transfert de ports dans votre espace de code Â».
  • portsAttributes - Cette propriĂ©tĂ© mappe un port spĂ©cifiĂ© Ă  une ou plusieurs options par dĂ©faut. Pour plus d’informations, consultez la spĂ©cification sur les conteneurs de dĂ©veloppement sur le site web Conteneurs de dĂ©veloppement.
  • postCreateCommand : Utilisez cette propriĂ©tĂ© pour exĂ©cuter des commandes aprĂšs la crĂ©ation de votre codespace. Elle peut ĂȘtre mise en forme en tant que chaĂźne (comme ci-dessus), tableau ou objet. Pour plus d’informations, consultez la spĂ©cification sur les conteneurs de dĂ©veloppement sur le site web Conteneurs de dĂ©veloppement.
  • customizations : Cette propriĂ©tĂ© vous permet de personnaliser un outil ou un service spĂ©cifique lorsqu’il est utilisĂ© pour travailler dans un codespace. Par exemple, vous pouvez configurer des paramĂštres et des extensions spĂ©cifiques pour VS Code. Pour plus d’informations, consultez Outils et services de prise en charge sur le site web Development Containers.
  • remoteUser : Par dĂ©faut, vous travaillez en tant qu’utilisateur vscode, mais vous pouvez aussi dĂ©finir cette valeur sur root.

Pour obtenir la liste complÚte des propriétés disponibles, consultez la spécification des conteneurs de développement sur le site web Development Containers.

Autres fichiers de configuration de conteneur de développement

Si vous ĂȘtes familiarisĂ© avec Docker, vous voudrez peut-ĂȘtre utiliser un Dockerfile, ou Docker Compose, pour configurer votre environnement de codespace, en plus du fichier devcontainer.json. Pour ce faire, ajoutez vos fichiers Dockerfile ou compose.yaml en mĂȘme temps que le fichier devcontainer.json. Pour plus d’informations, consultez Utiliser les images, les fichiers Docker et Docker Compose sur le site web Development Containers.

Étape 3 : modifier votre fichier devcontainer.json

Une fois votre configuration de conteneur de dĂ©veloppement ajoutĂ©e et aprĂšs avoir gĂ©nĂ©ralement compris le fonctionnement de chaque Ă©lĂ©ment, vous pouvez dĂ©sormais apporter des modifications pour personnaliser davantage votre environnement. Dans cet exemple, vous allez ajouter des propriĂ©tĂ©s qui :

  • TransfĂšrent le port sur lequel l’application s’exĂ©cute sur l’ordinateur distant Ă  votre ordinateur local.
  • ExĂ©cutent dotnet restore, une fois le conteneur de dĂ©veloppement créé, pour restaurer les dĂ©pendances demandĂ©es par l’application.
  • Installent automatiquement une extension VS Code dans ce codespace.
  1. Dans le fichier devcontainer.json, ajoutez une virgule aprÚs la propriété features et supprimez les deux lignes commentées sur les fonctionnalités.

    JSONC
      "features": {
        "ghcr.io/devcontainers/features/dotnet:1": {}
      },
    
      // Features to add to the dev container. More info: https://containers.dev/features.
      // "features": {},
    
  2. Décommentez la propriété forwardPorts et remplacez sa valeur par le port 5000 uniquement.

    JSONC
    // Use 'forwardPorts' to make a list of ports inside the container available locally.
    "forwardPorts": [5000],
    
  3. Décommentez la propriété postCreateCommand.

    JSONC
    // Use 'postCreateCommand' to run commands after the container is created.
    "postCreateCommand": "dotnet restore",
    
  4. DĂ©commentez la propriĂ©tĂ© customizations et modifiez-la comme suit pour installer l’extension « Code Spell Checker Â» VS Code.

    JSONC
    // Configure tool-specific properties.
    "customizations": {
      // Configure properties specific to VS Code.
      "vscode": {
        // Add the IDs of extensions you want installed when the container is created.
        "extensions": [
          "streetsidesoftware.code-spell-checker"
        ]
      }
    }
    

    Le fichier devcontainer.json doit maintenant ressembler Ă  ceci, en fonction de l’image que vous avez choisie :

    // For format details, see https://aka.ms/devcontainer.json. For config options, see the
    // README at: https://github.com/devcontainers/templates/tree/main/src/dotnet
    {
      "name": "C# (.NET)",
      // Or use a Dockerfile or Docker Compose file. More info: https://containers.dev/guide/dockerfile
      "image": "mcr.microsoft.com/devcontainers/dotnet:0-7.0",
      "features": {
        "ghcr.io/devcontainers/features/dotnet:1": {}
      },
    
      // Use 'forwardPorts' to make a list of ports inside the container available locally.
      "forwardPorts": [5000],
      // "portsAttributes": {
      //   "5001": {
      //     "protocol": "https"
      //   }
      // }
    
      // Use 'postCreateCommand' to run commands after the container is created.
      "postCreateCommand": "dotnet restore",
    
      // Configure tool-specific properties.
      "customizations": {
        // Configure properties specific to VS Code.
        "vscode": {
          // Add the IDs of extensions you want installed when the container is created.
          "extensions": [
            "streetsidesoftware.code-spell-checker"
          ]
        }
      }
    
      // Uncomment to connect as root instead. More info: https://aka.ms/dev-containers-non-root.
      // "remoteUser": "root"
    }
    
  5. Enregistrez vos modifications.

  6. AccĂ©dez Ă  la VS Code Command Palette (Maj+Commande+P / Ctrl+Maj+P), puis commencez Ă  taper « regĂ©nĂ©rer Â». Cliquez sur Codespaces : RegĂ©nĂ©rer le conteneur.

    Capture d’écran de la Palette de commandes avec une recherche pour « regĂ©nĂ©rer le conteneur Â» et l’option « Codespace : regĂ©nĂ©rer le conteneur Â» est mise en Ă©vidence dans la liste dĂ©roulante.

    Conseil

    Vous souhaiterez parfois effectuer une rĂ©gĂ©nĂ©ration complĂšte pour vider votre cache et rĂ©gĂ©nĂ©rer votre conteneur avec de nouvelles images. Pour plus d’informations, consultez « RegĂ©nĂ©ration du conteneur dans un codespace Â». La reconstruction Ă  l’intĂ©rieur de votre espace de code garantit que vos modifications fonctionnent comme prĂ©vu avant de valider les modifications dans le rĂ©fĂ©rentiel. Si quelque chose entraĂźne un Ă©chec, vous serez placĂ© dans un espace de code avec un conteneur de rĂ©cupĂ©ration Ă  partir duquel vous pouvez reconstruire pour ajuster votre conteneur.

    Une fois que le conteneur de dĂ©veloppement est recréé et que votre codespace redevient disponible, postCreateCommand aura Ă©tĂ© exĂ©cutĂ©, restaurant les dĂ©pendances requises, et l’extension « Code Spell Checker Â» sera disponible.

Étape 4 : ExĂ©cuter votre application

Dans la section prĂ©cĂ©dente, vous avez utilisĂ© postCreateCommand pour installer un ensemble de packages via la commande dotnet restore. Maintenant que les dĂ©pendances sont installĂ©es, vous pouvez exĂ©cuter l’application.

  1. ExĂ©cutez l’application en appuyant sur F5 ou en entrant dotnet watch run dans le terminal.

  2. Lorsque l’application dĂ©marre, cliquez sur l’onglet Ports, cliquez avec le bouton droit sur le port 5000, puis cliquez sur Ouvrir dans le navigateur.

    Capture d’écran de l’onglet « Ports », montrant le menu de clic droit avec le pointeur du curseur pointant vers l’option « Ouvrir dans le navigateur ».

Étape 5 : valider vos modifications

Quand vous avez apportĂ© des modifications Ă  votre codespace, que ce soit du nouveau code ou des changements de configuration, vous voudrez commiter vos modifications. Le fait de commiter les changements de configuration de votre dĂ©pĂŽt permet de s’assurer que toute autre personne qui crĂ©e un codespace Ă  partir de ce dĂ©pĂŽt dispose de la mĂȘme configuration. Toute personnalisation que vous apportez, comme ajouter des extensions VS Code, est disponible pour tous les utilisateurs.

Pour ce tutoriel, vous avez créé un codespace Ă  partir d’un dĂ©pĂŽt de modĂšles, donc le code de votre codespace n’est pas encore stockĂ© dans un dĂ©pĂŽt. Vous pouvez crĂ©er un dĂ©pĂŽt en publiant la branche actuelle sur GitHub.

Pour plus d’informations, consultez Utilisation du contrîle de code source dans votre espace de code.

Étapes suivantes

Vous devriez maintenant ĂȘtre en mesure d’ajouter une configuration de conteneur de dĂ©veloppement personnalisĂ©e Ă  votre propre projet C# (.NET).

Voici quelques ressources supplémentaires pour les scénarios plus avancés.