This is the template repository that contains the devcontainer settings for .NET app development.
If you want to use this devcontainer settings, you can create a new repository with this template repository, by clicking the "Use this template" button.
By default, this devcontainer settings uses the base image of Ubuntu 22.04 LTS (jammy).
"build": {
"dockerfile": "./Dockerfile",
"context": ".",
"args": {
"VARIANT": "6.0-jammy"
}
}
However, there is currently a bug on the C# extension v1.25.0 for Razor support on Ubuntu 22.04 LTS (jammy). Therefore, if you need Razor support, build your devcontainer with Ubuntu 20.04 LTS (focal).
"build": {
"dockerfile": "./Dockerfile",
"context": ".",
"args": {
// Use this only if you need Razor support, until OmniSharp supports .NET 6 properly
"VARIANT": "6.0-focal"
}
}
-
If you want to install Azure CLI, uncomment the section under the
features
attribute."features": { ... // Uncomment the below to install Azure CLI "ghcr.io/devcontainers/features/azure-cli:1": { "version": "latest" } ... },
-
If you want to install GitHub CLI, uncomment the section under the
features
attribute."features": { ... // Uncomment the below to install GitHub CLI "ghcr.io/devcontainers/features/github-cli:1": { "version": "latest" } ... },
-
If you want to install node.js, uncomment the section under the
features
attribute."features": { ... // Uncomment the below to install node.js "ghcr.io/devcontainers/features/node:1": { "version": "lts", "nodeGypDependencies": true, "nvmInstallPath": "/usr/local/share/nvm" } ... },
-
If you want to add more features, find this repository: devcontainer features.
-
There are optional extensions that you can selectively install, under the
customizations.vscode.extensions
attribute. You can simply uncomment each line to enable or comment out one to disable."customizations": { "vscode": { "extensions": [ // Recommended extensions - GitHub "cschleiden.vscode-github-actions", "GitHub.vscode-pull-request-github", // Recommended extensions - Azure "ms-azuretools.vscode-bicep", // Recommended extensions - Collaboration "eamodio.gitlens", "EditorConfig.EditorConfig", "MS-vsliveshare.vsliveshare-pack", "streetsidesoftware.code-spell-checker", // Recommended extensions - .NET "Fudge.auto-using", "jongrant.csharpsortusings", "kreativ-software.csharpextensions", // Recommended extensions - Power Platform "microsoft-IsvExpTools.powerplatform-vscode", // Recommended extensions - Markdown "bierner.github-markdown-preview", "DavidAnson.vscode-markdownlint", "docsmsft.docs-linting", "johnpapa.read-time", "yzhang.markdown-all-in-one", ... ], ... } }
-
Alternatively, you can add as many extra extensions as you like, from Visual Studio Code Marketplace.
-
There are customisation options for your Codespaces settings, under the
customizations.vscode.settings
attribute. You can simply uncomment each item to enable or comment out one to disable."customizations": { "vscode": { "settings": { // Uncomment if you want to use zsh as the default shell "terminal.integrated.defaultProfile.linux": "zsh", "terminal.integrated.profiles.linux": { "zsh": { "path": "/usr/bin/zsh" } }, // Uncomment if you want to use CaskaydiaCove Nerd Font as the default terminal font "terminal.integrated.fontFamily": "CaskaydiaCove Nerd Font", // Uncomment if you want to disable the minimap view "editor.minimap.enabled": false, // Recommended settings for the explorer pane "explorer.sortOrder": "type", "explorer.fileNesting.enabled": true, "explorer.fileNesting.patterns": { "*.bicep": "${capture}.json", "*.razor": "${capture}.razor.css", "*.js": "${capture}.js.map" } } } }
-
If you want to do more granular configurations, refer to this page, User and Workspace Settings.
-
If you want to use
bash
as your main shell and want to run the shell script after the container is created:// Uncomment if you want to use bash in 'postCreateCommand' after the container is created "postCreateCommand": "/bin/bash ./.devcontainer/post-create.sh > ~/post-create.log",
-
If you want to use
zsh
as your main shell and want to run the shell script after the container is created:// Uncomment if you want to use zsh in 'postCreateCommand' after the container is created "postCreateCommand": "/usr/bin/zsh ./.devcontainer/post-create.sh > ~/post-create.log",
-
If you want to install CaskaydiaCove Nerd Font, uncomment the section below.
## CaskaydiaCove Nerd Font # Uncomment the below to install the CaskaydiaCove Nerd Font mkdir $HOME/.local mkdir $HOME/.local/share mkdir $HOME/.local/share/fonts wget https://github.com/ryanoasis/nerd-fonts/releases/latest/download/CascadiaCode.zip unzip CascadiaCode.zip -d $HOME/.local/share/fonts rm CascadiaCode.zip
Use this option if you want to use oh-my-posh for PowerShell.
-
If you want to install Azure CLI extensions, uncomment the section below.
## AZURE CLI EXTENSIONS ## # Uncomment the below to install Azure CLI extensions extensions=$(az extension list-available --query "[].name" | jq -c -r '.[]') for extension in $extensions; do az extension add --name $extension done
Use this option with care because it will install ALL extensions at once.
-
If you want to install Azure Bicep CLI, uncomment the section below.
## AZURE BICEP CLI ## # Uncomment the below to install Azure Bicep CLI az bicep install
-
If you want to install Azure Functions Core Tools, uncomment the section below.
## AZURE FUNCTIONS CORE TOOLS ## # Uncomment the below to install Azure Functions Core Tools npm i -g azure-functions-core-tools@4 --unsafe-perm true
-
If you want to install Azure Static Web Apps CLI, uncomment the section below.
## AZURE STATIC WEB APPS CLI ## # Uncomment the below to install Azure Static Web Apps CLI npm install -g @azure/static-web-apps-cli
-
If you want to install Azure Dev CLI, uncomment the section below.
## AZURE DEV CLI ## # Uncomment the below to install Azure Dev CLI curl -fsSL https://aka.ms/install-azd.sh | bash
DEPENDENCIES: Make sure that you must get both Azure CLI and GitHub CLI installed beforehand.
-
If you want to install plugins and themes for oh-my-zsh without using your dotfiles, uncomment the section below.
## OH-MY-ZSH PLUGINS & THEMES (POWERLEVEL10K) ## # Uncomment the below to install oh-my-zsh plugins and themes (powerlevel10k) without dotfiles integration git clone https://github.com/zsh-users/zsh-completions.git $HOME/.oh-my-zsh/custom/plugins/zsh-completions git clone https://github.com/zsh-users/zsh-syntax-highlighting.git $HOME/.oh-my-zsh/custom/plugins/zsh-syntax-highlighting git clone https://github.com/zsh-users/zsh-autosuggestions.git $HOME/.oh-my-zsh/custom/plugins/zsh-autosuggestions git clone https://github.com/romkatv/powerlevel10k.git $HOME/.oh-my-zsh/custom/themes/powerlevel10k --depth=1 ln -s $HOME/.oh-my-zsh/custom/themes/powerlevel10k/powerlevel10k.zsh-theme $HOME/.oh-my-zsh/custom/themes/powerlevel10k.zsh-theme
DEPENDENCIES: Make sure that you have already installed oh-my-zsh through the settings on
devcontainer.json
. -
If you want to install oh-my-zsh configurations without using your dotfiles, uncomment the section below.
## OH-MY-ZSH - POWERLEVEL10K SETTINGS ## # Uncomment the below to update the oh-my-zsh settings without dotfiles integration curl https://raw.githubusercontent.com/justinyoo/devcontainers-dotnet/main/oh-my-zsh/.p10k-with-clock.zsh > $HOME/.p10k-with-clock.zsh curl https://raw.githubusercontent.com/justinyoo/devcontainers-dotnet/main/oh-my-zsh/.p10k-without-clock.zsh > $HOME/.p10k-without-clock.zsh curl https://raw.githubusercontent.com/justinyoo/devcontainers-dotnet/main/oh-my-zsh/switch-p10k-clock.sh > $HOME/switch-p10k-clock.sh chmod +x ~/switch-p10k-clock.sh cp $HOME/.p10k-with-clock.zsh $HOME/.p10k.zsh cp $HOME/.zshrc $HOME/.zshrc.bak echo "$(cat $HOME/.zshrc)" | awk '{gsub(/ZSH_THEME=\"codespaces\"/, "ZSH_THEME=\"powerlevel10k\"")}1' > $HOME/.zshrc.replaced && mv $HOME/.zshrc.replaced $HOME/.zshrc echo "$(cat $HOME/.zshrc)" | awk '{gsub(/plugins=\(git\)/, "plugins=(git zsh-completions zsh-syntax-highlighting zsh-autosuggestions)")}1' > $HOME/.zshrc.replaced && mv $HOME/.zshrc.replaced $HOME/.zshrc echo " # To customize prompt, run 'p10k configure' or edit ~/.p10k.zsh. [[ ! -f ~/.p10k.zsh ]] || source ~/.p10k.zsh " >> $HOME/.zshrc
DEPENDENCIES: Make sure that you uncommend the oh-my-zsh plugins and themes section before using this section.
If you want to switch the
powerlevel10k
configuration with clock or without clock, run the following shell script:# Disable clock ~/switch-p10k-clock.sh # Enable clock ~/switch-p10k-clock.sh -c
-
If you want to install oh-my-posh for PowerShell, uncomment the section below
## OH-MY-POSH ## # Uncomment the below to install oh-my-posh sudo wget https://github.com/JanDeDobbeleer/oh-my-posh/releases/latest/download/posh-linux-amd64 -O /usr/local/bin/oh-my-posh sudo chmod +x /usr/local/bin/oh-my-posh
-
If you want to install oh-my-posh configurations without using your dotfiles, uncomment the section below.
## OH-MY-POSH - POWERLEVEL10K SETTINGS ## # Uncomment the below to update the oh-my-posh settings without dotfiles integration curl https://raw.githubusercontent.com/justinyoo/devcontainers-dotnet/main/oh-my-posh/p10k-with-clock.omp.json > $HOME/p10k-with-clock.omp.json curl https://raw.githubusercontent.com/justinyoo/devcontainers-dotnet/main/oh-my-posh/p10k-without-clock.omp.json > $HOME/p10k-without-clock.omp.json curl https://raw.githubusercontent.com/justinyoo/devcontainers-dotnet/main/oh-my-posh/switch-p10k-clock.ps1 > $HOME/switch-p10k-clock.ps1 mkdir $HOME/.config/powershell curl https://raw.githubusercontent.com/justinyoo/devcontainers-dotnet/main/oh-my-posh/Microsoft.PowerShell_profile.ps1 > $HOME/.config/powershell/Microsoft.PowerShell_profile.ps1 cp $HOME/p10k-with-clock.omp.json $HOME/p10k.omp.json
DEPENDENCIES: Make sure that you uncommend the oh-my-posh installation section before using this section.
If you want to switch the
powerlevel10k
configuration with clock or without clock, run the following shell script:# Disable clock ~/switch-p10k-clock.ps1 # Enable clock ~/switch-p10k-clock.ps1 -WithClock