На github есть отличная статья на эту тему - Подсистема Windows для Linux .
Короче говоря, вам нужно сначала проверить свою версию после обновления создателей Windows 10:
~$ cat /etc/os-release | grep -i version
VERSION="16.04.2 LTS (Xenial Xerus)"
VERSION_ID="16.04"
VERSION_CODENAME=xenial
Обратите внимание на следующее :
Если вы обновились до обновления Windows Creators и уже установили WSL, возможно, Ubuntu 14 по-прежнему установлен вWSL.Если версия 14, выполните следующие команды в командной строке cmd для переустановки и обновления WSL.
lxrun /uninstall /full
lxrun /install
Загрузите отладчик :
sudo apt-get install unzip
curl -sSL https://aka.ms/getvsdbgsh | bash /dev/stdin -v latest -l ~/vsdbg
Отладчик будет установлен на ~/vsdbg/vsdbg
, это debuggerPath .
Пример конфигурации launch.json для запуска :
{
"name": ".NET Core WSL Launch",
"type": "coreclr",
"request": "launch",
"preLaunchTask": "publish",
"program": "/mnt/c/temp/dotnetapps/wslApp/bin/publish/wslApp.dll",
"args": [],
"cwd": "/mnt/c/temp/dotnetapps/wslApp",
"stopAtEntry": false,
"console": "internalConsole",
"pipeTransport": {
"pipeCwd": "${workspaceRoot}",
"pipeProgram": "bash.exe",
"pipeArgs": [ "-c" ],
"debuggerPath": "~/vsdbg/vsdbg"
}
}
Обратите внимание:
- /. Vscode / launch.json: предоставляет массив различных конфигураций, которые можно использовать для запуска приложения.В представлении «Отладка» есть раскрывающийся список, позволяющий выбрать, какая конфигурация активна.
- /. Vscode / tasks.json: Это предоставляет массив различных задач, таких как создание приложения, которые вы можете выполнить.Конфигурации отладки могут ссылаться на одну из этих задач через свойство preLaunchTask.
Пример задачи 'publish' для tasks.json (необходим для запуска) :
{
"version": "2.0.0",
"tasks": [
...,
{
"label": "publish",
"command": "dotnet",
"type": "process",
"args": [
"publish",
"${workspaceFolder}/wslApp.csproj",
"-o",
"${workspaceFolder}/bin/publish"
]
}
]
}
Обратите внимание :
preLaunchTask выполняет публикацию dotnet, которая создает проект на Windows.Поскольку coreclr является кроссплатформенным, двоичный файл может выполняться на WSL без какой-либо дополнительной работы.
pipeProgram установлен на bash.exe.
debuggerPath указывает на vsdbg, отладчик coreclr.
Это не будет поддерживать программы, которые хотят читать с консоли.
Пример конфигурации launch.json для присоединения :
{
"name": ".NET Core WSL Attach",
"type": "coreclr",
"request": "attach",
"processId": "${command:pickRemoteProcess}",
"pipeTransport": {
"pipeCwd": "${workspaceRoot}",
"pipeProgram": "bash.exe",
"pipeArgs": [ "-c" ],
"debuggerPath": "~/vsdbg/vsdbg",
"quoteArgs": true
}
}
Обратите внимание: :
"processId": "${command:pickRemoteProcess}"
перечисляет процессы, выполняющиеся на WSL с использованием каналаprogram. quoteArgs
будет заключать в кавычки любые аргументы и команды отладчика с пробелами, если установлено значение true. - Используйте
sourceFileMap
для сопоставления источников, если они доступны в другом месте, отличном от того, где они быливстроенный.Если вы строите свой проект в Linux, обязательно добавьте карту из букв /mnt
.Пример: "sourceFileMap": { "/mnt/c/": "c:\\" }
- Файл и пути чувствительны к регистру в Linux.