Visual studio code

De Banane Atomic
(Redirigé depuis Vscode)
Aller à la navigationAller à la recherche

Liens

Raccourcis clavier

Ctrl + Shift + P Lancer une commande
Shift + Alt + F
Ctrl + Shift + I
Formater le code
Ctrl + K, M Change Language Mode
Ctrl + ! Afficher le terminal
Ctrl + Shift + Alt + ↓ Duplicate current line (Copy Line Down)
Ctrl + Shift + 7 Toogle line comment
To know the action binded to a shortcut, you can search the shortcut: "ctrl+d"

Utilisation

Bash.svg
# créé le template "Console Application" (vscode.csproj Program.cs)
dotnet new console

# lister les templates disponibles
dotnet new -l

# lancer VS code dans le répertoire courant
code .
À l'ouverture de vscode, les éléments manquants sont téléchargés automatiquement (OmniSharp, .NET Core Debugger)

Settings

File → Preferences → Settings Ctrl + ,

Règlages Setting Value
Side Bar à droite Workbench → Appearence → Side Bar: Location right
Formatter à la sauvegarde Editor: Format On Save
Editor: Format On Paste
Font Editor: Font Family
Editor: Font Size
'Droid Sans Mono'
16
Word Wrap Editor: Word Wrap on
Cursor Editor: Cursor Blinking phase
Auto Save Files: Auto Save onFocusChange
Nb de fichiers dans Open Editors Explorer - Open Editors: Visible 0
Affiche les lignes de context lors du scroll Editor: Sticky Scroll Enabled

OLD

Json.svg
"window.zoomLevel": 1,

"explorer.enableDragAndDrop": false,

// Git Bash (défaut: powershell )
"terminal.integrated.shell.windows": "C:\\Program Files\\Git\\bin\\bash.exe",

Associate a file extension to a language

  1. open the file you want to associate to a language
  2. Ctrl + K + M (Change Language Mode)
  3. select the language to associate, if it is not listed you can enter the first letter to search it

Color Theme

File → Preferences → Color Theme
Color theme files are located at /usr/lib/code/extensions/theme-*

Extensions

Dernier élément du menu de gauche ou View → Extensions

  • ~/.vscode/extensions
  • %USERPROFILE%\.vscode\extensions

Communes

Nom de l'extension Description
vscode-icons belles icônes dans l'arborescence de fichiers (file folder)
Azure Repos
  1. Ctrl + P
  2. > team signin
Git Lens suite d'outils Git: Commit Graph, Commit Details, Visual File History (Pro)
Git History affiche l'historique des commits
Create GUID génère un GUID et le copie dans le presse-papier

C#

Nom de l'extension Description
jchannon C# Extensions
  • context menu explorer side bar → New C# Class / Interface
  • generate fields / properties from a constructor
  • generate constructor from properties
Auto-Using for C# automatically add using and references
Super Sharp
  • move a class to a new file
  • add constructor injected dependencies
NuGet Gallery installation / désinstallation de package NuGet
.NET Core Test Explorer tests unitaires
C# XML Documentation Comments commentaires avec ///
ILSpy .NET Decompiler décompiler des assemby - Ctrl+Shift+P → ilspy
EditorConfig for VS Code override user/workspace settings with settings found in .editorconfig files

.NET Core Test Explorer

Cette extension recherche dans le dossier courant les fichiers *.csproj et *.sln pour découvrir les projects de test.

Bash.svg
# create a folder and a file MySolution/MySolution.sln 
dotnet new sln -o MySolution

# add projets to the solution
dotnet sln add ./MyProject/MyProject.csproj

SQL

Nom de l'extension Description
SQLTools Connection explorer, query runner, intellisense, bookmarks, query history
SQLTools Microsoft SQL Server/Azure
SQLTools MySQL/MariaDB SQLTools driver for MySQL and MariaDB

Python

Extension Description
Python IntelliSense, linting, debugging, code navigation, code formatting, Jupyter notebook support, refactoring, variable explorer, test explorer

Angular

Nom de l'extension Description
Angular v6 Snippets
AngularDoc for Visual Studio Code arborescence pour navigation dans le code
Auto Import import auto dans les fichier TS
ESLint vérification du code javascript
markdownlint lint for MD
Markdown All in One format MD document + racourcis-clavier
TSLint vérification du code ts. Rules

Config ClientApp\tslint.json

TypeScript Hero
  • trie des imports, suppression des inutiles
  • ajout des imports
Move TS Move TypeScript files and update relative imports
Auto Close Tag HTML / XML
Auto Rename Tag renomme la balise fermante en même temps que la balise ouvrante

Travailler avec plusieurs projets (multi-root workspaces)

  • Ouvrir un second dossier dans le même VScode: File → Add Folder to Workspace (lien)
  • Référencer un autre projet:
Bash.svg
cd MainProject
dotnet add reference ../LibProject/LibProject.csproj
MainProject.csproj
<ItemGroup>
  <ProjectReference Include="..\LibProject\LibProject.csproj" />
</ItemGroup>

Debug multiple projects

  • Ajouter compounds au fichier .vscode/launch.json du workspace.
  • Dans Debug l'entrée définit dans compounds est disponible.
.vscode/launch.json
{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "BlazorServerApp",
            "type": "coreclr",
            "request": "launch",
            "preLaunchTask": "build BlazorServerApp",
            "program": "${workspaceFolder}/BlazorServerApp/bin/Debug/netcoreapp3.1/BlazorServerApp.dll",
            "args": [],
            "cwd": "${workspaceFolder}/BlazorServerApp",
            "stopAtEntry": false,
            "serverReadyAction": {
                "action": "openExternally",
                "pattern": "^\\s*Now listening on:\\s+(https?://\\S+)"
            },
            "env": {
                "ASPNETCORE_ENVIRONMENT": "Development"
            },
            "sourceFileMap": {
                "/Views": "${workspaceFolder}/Views"
            }
        },
        {
            "name": "WebApi",
            "type": "coreclr",
            "request": "launch",
            "preLaunchTask": "build WebApi",
            "program": "${workspaceFolder}/WebApi/bin/Debug/netcoreapp3.1/WebApi.dll",
            "args": [],
            "cwd": "${workspaceFolder}/WebApi",
            "stopAtEntry": false,
            "serverReadyAction": {
                "action": "openExternally",
                "pattern": "^\\s*Now listening on:\\s+(https?://\\S+)"
            },
            "env": {
                "ASPNETCORE_ENVIRONMENT": "Development"
            },
            "sourceFileMap": {
                "/Views": "${workspaceFolder}/Views"
            }
        }
    ],
    "compounds": [
        {
            "name": "BlazorServerApp / WebApi",
            "configurations": [
                "BlazorServerApp",
                "WebApi"
            ],
            "preLaunchTask": "build all"
        }
    ]
}

Tasks

  • Run a task: Ctrl + Shift + P → delete teh >task + Space → select the task
  • Lister les build tasks: Ctrl + Shift + B ou Terminal → Run Build Task
.vscode/tasks.json
{
    "version": "2.0.0",
    "tasks": [
        {
            "label": "build",
            "command": "dotnet",
            "type": "process",
            "args": [
                "build",
                "${workspaceFolder}/WebApi.csproj",
                "/property:GenerateFullPaths=true",
                "/consoleloggerparameters:NoSummary"
            ],
            "problemMatcher": "$msCompile"
        },
        {
            "label": "publish",
            "command": "dotnet",
            "type": "process",
            "args": [
                "publish",
                "${workspaceFolder}/WebApi.csproj",
                "/property:GenerateFullPaths=true",
                "/consoleloggerparameters:NoSummary"
            ],
            "problemMatcher": "$msCompile"
        },
        {
            "label": "watch",
            "command": "dotnet",
            "type": "process",
            "args": [
                "watch",
                "run",
                "${workspaceFolder}/WebApi.csproj",
                "/property:GenerateFullPaths=true",
                "/consoleloggerparameters:NoSummary"
            ],
            "problemMatcher": "$msCompile"
        }
    ]
}

Appeler d'autres taches

.vscode/tasks.json
{
    "version": "2.0.0",
    "tasks": [
        {
            "label": "build all",
            "dependsOn": [
                "build server",
                "build client"
            ],
            "group": "build",
            "problemMatcher": []
        },
        {
            "label": "build server",
            "command": "dotnet",
            "type": "process",
            "args": [
                "build",
                "${workspaceFolder}/Server/Server.csproj",
                "/property:GenerateFullPaths=true",
                "/consoleloggerparameters:NoSummary"
            ],
            "group": "build",
            "problemMatcher": "$msCompile"
        },
        {
            "label": "build client",
            "command": "dotnet",
            "type": "process",
            "args": [
                "build",
                "${workspaceFolder}/Client/Client.csproj",
                "/property:GenerateFullPaths=true",
                "/consoleloggerparameters:NoSummary"
            ],
            "group": "build",
            "problemMatcher": "$msCompile"
        }
    ]
}

Problem Matcher

dotnet tasks

tasks.json
{
    "label": "roslynator",
    "command": "roslynator",
    "type": "shell",
    "args": [
        "analyze",
        "--analyzer-assemblies",
        "~/.vscode/extensions/josefpihrt-vscode.roslynator-4.3.0/roslyn/common",
        "~/.vscode/extensions/josefpihrt-vscode.roslynator-4.3.0/roslyn/analyzers"
    ],
    "problemMatcher": [
        {
            "owner": "roslynator",
            "fileLocation": ["relative", "${workspaceFolder}"], // if it is run for a solution, it missed the project folder
            "pattern": [
                {
                    "regexp": "^(.+?)\\((\\d+),(\\d+)\\): (warning|error) (.+?): (.+?)$",
                    "file": 1,
                    "line": 2,
                    "column": 3,
                    "severity": 4,
                    "code": 5,
                    "message": 6
                }
            ]
        }
    ]
},
{
    "label": "code style",
    "command": "dotnet",
    "type": "shell",
    "args": [
        "format",
        "--verify-no-changes"
    ],
    "problemMatcher": [
        {
            "owner": "dotnet",
            "fileLocation": "absolute",
            "pattern": [
                {
                    "regexp": "^(.+?)\\((\\d+),(\\d+)\\): (warning|error) (.+?): (.+?) \\[.+\\]$",
                    "file": 1,
                    "line": 2,
                    "column": 3,
                    "severity": 4,
                    "code": 5,
                    "message": 6
                }
            ]
        }
    ]
}

launch

.vscode/tasks.json
{
    "name": "Service .NET Core Launch (web)",
    "type": "coreclr",
    "request": "launch",
    "preLaunchTask": "build Service",
    "program": "${workspaceFolder}/Service/bin/Debug/netcoreapp3.1/Service.dll",
    "args": [],
    "cwd": "${workspaceFolder}/Service",
    "stopAtEntry": false,
    "serverReadyAction": {
        "action": "openExternally",
        "pattern": "^\\s*Now listening on:\\s+(https?://\\S+)",
        "uriFormat": "%s/swagger"
    },
    "env": {
        "ASPNETCORE_ENVIRONMENT": "Development"
    },
    "logging": {
        "engineLogging": true
    }
}

launch settings

Quand l’application est lancée avec dotnet run, launchSettings.json est lu s’il est disponible:

  • le premier profil avec "commandName": "Project" est utilisé
  • les paramètres environmentVariables remplacent les variables d’environnement
launchSettings.json
{
  "profiles": {
    "MyApp": {
      "commandName": "Project",
      "launchBrowser": true,
      "applicationUrl": "http://localhost:5000",
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development"
      }
    }
  }
}

SQL Server

  1. installer l'extension mssql
  2. nouvelle page → en bas à droite clique sur Plain Text → choisir SQL
  3. ou ouvrir un fichier *.sql
  4. F1MS SQL: Connect ou cliquer sur Disconnected en bas à droite → Create Connection Profile
  5. Ctrl + Shift + E exécuter du code

Markdown

Ctrl + Shift + V → preview

Replace

New line

To replace by a new line:

  • use Ctrl + Enter
  • or check .* (RegEx) and use \n

regex

Bash.svg
.* xxx (\w+).*
$1

Erreurs

The "Microsoft.AspNetCore.Razor.Tasks.DiscoverDefaultScopedCssItems" task could not be loaded

The "Microsoft.AspNetCore.Razor.Tasks.DiscoverDefaultScopedCssItems" task could not be loaded from the assembly /usr/share/dotnet/sdk/5.0.204/Sdks/Microsoft.NET.Sdk.Razor/build/netstandard2.0/../../tasks/net46/Microsoft.NET.Sdk.Razor.Tasks.dll.
Invalid Image Confirm that the <UsingTask> declaration is correct, that the assembly and all its dependencies are available, and that the task contains a public class that implements Microsoft.Build.Framework.ITask.

Create the folder /usr/share/dotnet/sdk/5.0.204/Sdks/Microsoft.NET.Sdk.Razor/tasks/net46 and copy the following files:

  • Microsoft.NET.Sdk.Razor.Tasks
  • System.Collections.Immutable
  • System.Reflection.Metadata

Error processing 'handshake' request. Unknown Error: 0x89720010

C# debugging doesn't start the application.
Microsoft .NET Core Debugger only works with Microsoft Visual Studio Code and not with Visual Studio Code OSS (link).

Visual Studio Code is unable to watch for file changes in this large workspace

Bash.svg
# Afficher le nombre max de fichiers qui peuvent être surveillés
cat /proc/sys/fs/inotify/max_user_watches

# Modifier temporairement le nombre max de fichiers qui peuvent être surveillés
echo 65536 > /proc/sys/fs/inotify/max_user_watches

# Modifier le nombre max de fichiers qui peuvent être surveillés (Archlinux)
echo fs.inotify.max_user_watches=524288 | sudo tee /etc/sysctl.d/40-max-user-watches.conf && sudo sysctl --system

Microsoft.Common.props was not found

Microsoft.Build.Exceptions.InvalidProjectFileException: The imported project "/usr/lib/mono/xbuild/15.0/Microsoft.Common.props" was not found. Confirm that the path in the <Import> declaration is correct, and that the file exists on disk.  /opt/dotnet/sdk/2.1.105/Sdks/Microsoft.NET.Sdk/Sdk/Sdk.props

Installer MSBuild

Bash.svg
yaourt msbuild
# aur/msbuild-15-bin 15.5_xamarinxplat.2017.08.16.12.03_0xamarin3_ubuntu1404b1-3

msbuild /ver

The terminfo database is invalid

MSBUILD : error MSB1025: An internal failure occurred while running MSBuild.
System.InvalidOperationException: The terminfo database is invalid.
Bash.svg
TERM=xterm dotnet build
TERM=xterm dotnet run

echo $TERM  # xterm-256color

Installation

Visual studio code is a code editor redefined, available on Windows, Linux and OS X, optimized for building web and cloud applications.

Bash.svg
# Visual Studio Code open source distribution: code-oss
pacman -S code

# Microsoft's Visual Studio Code distribution
yay visual-studio-code-bin

Differences between the repository and Visual Studio Code

Extension C#

Installer l'extension C#:

  • Bouton extension: dernier bouton du menu latéral de gauche
  • Rechercher C#
Bash.svg
# installer .NET core sdk pour compiler des applications et ses dépendances
yaourt dotnet-sdk-2.0

OBSOLÈTE - Installing the .NET Core Debugger on Arch Linux

File → Preferences → Settings

Javascript.svg
{
    "csharp.fallbackDebuggerLinuxRuntimeId": "ubuntu.16.10-x64"
}
Bash.svg
# erreur Debug adapter process has terminated unexpectedly
yaourt icu57