atesting.ru Новости Unity development with vs code

Unity development with vs code

Known limitations

This section contains a list of common know issues with WSL. The intent is not to provide a complete list of issues but to highlight some of the common problems seen with WSL.

See here for a list of active issues related to WSL.

I see EACCESS: permission denied error trying to rename a folder in the open workspace in WSL 1

That’s a known problem with the WSL file system implementation (Microsoft/WSL#3395, Microsoft/WSL#1956) caused by the file watcher active by VSCode. The issue will only be fixed in WSL 2.

To avoid the issue, set to true. However, polling based file watching has a performance impact for large workspaces.

For large workspace you want to increase the polling interval: and control the folders that are watched: .

WSL 2 does not have that file watcher problem is also not affected by the new setting.

Node.js in WSL 1

Issue Existing issues
NodeJS Error: spawn EACCES (different variants of this error) Microsoft/WSL#3886
Webpack HMR not working Microsoft/WSL#2709
Firebase via node unusably slow only on WSL Microsoft/WSL#2657

Git limitations

If you clone a Git repository using SSH and your SSH key has a passphrase, VS Code’s pull and sync features may hang when running remotely. Either use an SSH key without a passphrase, clone using HTTPS, or run from the command line to work around the issue.

Docker Extension limitations

While the Docker extension can run both remotely and locally, if it is already installed locally, you will be unable to install on a remote SSH host without first uninstalling it locally. We will address this problem in a future VS Code release.

Extension limitations

Many extensions will work in WSL without modification. However, in some cases, certain features may require changes. If you run into an extension issue, see that you can mention to the extension author when reporting the issue.

In addition, some extensions installed in an WSL when using an Alpine Linux-based distribution may not work due to dependencies in native code inside the extension. See the Remote Development with Linux article for details.

Настройка

VS Code готов к рабо­те сра­зу после уста­нов­ки — в него по умол­ча­нию добав­ле­но боль­шин­ство пла­ги­нов для веб-разработки. Мож­но сра­зу загру­зить про­ект или начать про­грам­ми­ро­вать в новом фай­ле. Нуж­но толь­ко при­вык­нуть к интерфейсу. 

Если вы рань­ше поль­зо­ва­лись дру­гим редак­то­ром и не уда­ли­ли его с ком­пью­те­ра, то VS Code авто­ма­ти­че­ски пред­ло­жит пере­не­сти сохра­нён­ные настрой­ки. Для пере­но­са вам доста­точ­но клик­нуть на всплы­ва­ю­щую под­сказ­ку и пере­за­гру­зить VS Code — пере­но­сят­ся пла­ги­ны, рас­ши­ре­ния и уста­нов­лен­ные горя­чие клавиши. 

Если у вас ещё не было кодо­во­го редак­то­ра, то ниже мы рас­смот­рим несколь­ко базо­вых настро­ек, кото­рые помо­гут пер­со­на­ли­зи­ро­вать интер­фейс VS Code. 

Уста­нав­ли­ва­ем рус­ский язык. На левой боко­вой пане­ли нажми­те Extensios и в стро­ке поис­ка напи­ши­те Russian Language Pack — это язы­ко­вой пакет, кото­рый адап­ти­ру­ет VS Code под рус­ский язык. Выбе­ри­те рас­ши­ре­ния, клик­ни­те Install и пере­за­пу­сти­те редак­тор. У вас дол­жен открыть­ся руси­фи­ци­ро­ван­ный интерфейс.

Язы­ко­вой пакет Russian Language Pack 

Если после пере­за­груз­ки язык не изме­нил­ся — на левой боко­вой пане­ли нажми­те зна­чок шесте­рён­ки и выбе­ри­те раз­дел Command Palette. Появит­ся стро­ка поис­ка: напи­ши­те Display, выбе­ри­те коман­ду Configure Display Language и нажми­те Enter. Сме­ни­те язык с англий­ско­го на рус­ский и повтор­но пере­за­гру­зи­те редактор. 

При­вет­ствен­ное окно Visual Studio Code после уста­нов­ки язы­ко­во­го пакета 

Меня­ем цве­то­вую тему. В левой боко­вой пане­ли нажми­те на зна­чок шесте­рён­ки, перей­ди­те в раз­дел «Цве­то­вая тема» и выбе­ри­те тему, встро­ен­ную в редактор. 

Если ниче­го не нра­вит­ся — уста­но­ви­те любую внеш­нюю тему, кото­рую полу­чит­ся най­ти в интер­не­те. Если тема сов­ме­сти­ма с VS Code, то после ска­чи­ва­ния она сама откро­ет­ся в редак­то­ре и вам доста­точ­но нажать «Уста­но­вить». Начать поиск реко­мен­ду­ем с офи­ци­аль­но­го мар­кет­плей­са, где собра­ны тыся­чи бес­плат­ных тем.

Анна Лео­но­ва реко­мен­ду­ет тему Night Owl — ноч­ная сова. Её мы и поста­ви­ли для теста 

Добав­ля­ем люби­мый шрифт. В боко­вой пане­ли нажми­те на шесте­рён­ку, выбе­ри­те раз­дел «Пара­мет­ры» → «Тек­сто­вый редак­тор» → «Шрифт». Перед вами будет вклад­ка Font Family, в кото­рую нуж­но впи­сать назва­ние выбран­но­го шриф­та — если этот шрифт ска­чан или сохра­нён в опе­ра­ци­он­ной систе­ме, то он сра­зу отоб­ра­зит­ся в редак­то­ре. Здесь же мож­но изме­нить раз­мер и жир­ность шрифта. 

Меня­ем стан­дарт­ный шрифт Visual Studio Code на Courier New 

Вклю­ча­ем авто­со­хра­не­ние. В боко­вой пане­ли выбе­ри­те шесте­рён­ку, перей­ди­те в «Пара­мет­ры» → «Тек­сто­вый редак­тор» → «Фай­лы». Вы уви­ди­те вклад­ку Auto Save, в кото­рой нуж­но ука­зать пери­од сохра­не­ния фай­лов. Мы реко­мен­ду­ем режим afterDelay с задерж­кой в одну секун­ду — так вы буде­те сра­зу сохра­нять всё, что запи­ше­те. Если вы выбе­ре­те режим onFocusChange, то изме­не­ния в рабо­чем фай­ле будут сохра­нять­ся каж­дый раз, когда вы буде­те откры­вать дру­гие вклад­ки редак­то­ра. В режи­ме onWindowChange изме­не­ния про­ис­хо­дят сра­зу после того, когда вы сво­ра­чи­ва­е­те VS Code и откры­ва­е­те окна дру­гих программ.

Вклю­ча­ем режим авто­со­хра­не­ния и дела­ем так, что­бы фай­лы сохра­ня­лись ежесекундно 

Editor

files.eol per language

The setting can now be set per language. For example, you could define that all files of ‘mylanguage’ language identifier use as the default end-of-line sequence for all new files.

The end-of-line sequence is used for new files. For existing files, the current end-of-line sequence is always preserved. To change the end-of-line sequence for an existing file, use the Change End Of Line Sequence command.

Using a language setting, the default end-of-line sequence for ‘shellscript’ is now defined as .

Minimap scaling and improved font rendering

A new setting configures the minimap’s size to one of several constant values, particularly useful for high DPI or ultra-wide displays. Also, the rendering of the minimap’s font is now smoother and clearer.

Definition Preview Hover from the keyboard

There is a new command Show Definition Preview Hover for better accessibility of the definition preview hover widget, which can be triggered by hovering a symbol with the mouse and pressing a modifier key dependent on the platform and configuration. Previously, only the command Show Hover was provided, which is equivalent to hovering the mouse cursor over a symbol. Now, with Show Definition Preview Hover, the detailed hover information can be shown via the keyboard.

Improvements to bracket matching

Previously, VS Code would only highlight matching brackets when the cursor was next to a bracket character. Now VS Code will always highlight enclosing brackets if they exist.

We have also adjusted our Go to Bracket and Select to Bracket actions to use enclosing brackets.

Duplicate selection

We have added a new action named Duplicate Selection. When executed, the current selection will be duplicated and the result will be selected. When there is no selection, the current line will be duplicated, all without writing to the system clipboard.

Font feature settings

There is now more fine grained control over the font features. When configuring , VS Code would turn on and . But some fonts have more settings, such as stylistic sets used by Fira Code.

We now allow these font features to be explicitly controlled, for example:

The above settings configure the editor to use the Fira Code font family, turn on font ligatures for all languages, and in JavaScript files enable the ‘Horizontal Bar’ (‘ss02’) and the ‘Dotted zero’ (‘ss19’) font feature settings. These make the ligature render with a horizontal bar and the render with a dot inside it in JavaScript:

Better handling for Unicode combining characters

We have made improvements around handling of Unicode combining characters and we treat such sequences as atomic characters (in cursor movement, editing operations, or in block cursor rendering). This is best demonstrated using the block cursor style and a before/after animation:

Before:

After:

In a related change, the status bar now shows the Unicode point count in the section.

Cursor Redo

The Soft Undo command has been renamed to Cursor Undo. This action is useful, for example when using ⌘D (Windows, Linux Ctrl+D) to select the next match and going one time too far, as it undoes only the last cursor state change. Additionally, we now have added Cursor Redo, which redoes the previously undone cursor state change.

Diff editor improvements

The built-in diff computation used to have a hard-coded timeout of 5 seconds, after which it would give up and return a non-minimal diff. You can now configure this timeout using and setting the timeout to will always compute a minimal diff, no matter how long that would take. Additionally, the diff editor now renders a progress bar when the computation takes longer than one second.

A source of confusion when using the diff editor was when comparing files with only leading or trailing whitespace differences and the diff editor was configured to ignore trim whitespace. This would result in Source Control showing the files as modified, while the diff editor would render no diffs. VS Code now displays a Show Whitespace Differences button when it detects this case to help you quickly show diffs in whitespace. This can be toggled using the Show/Ignore Trim Trailing Whitespace Difference command at the top of the diff editor:

Engineering

Performance Improvements

There’s been considerable work surrounding both our GitHub Actions and Azure DevOps Pipelines infrastructure. Our builds now run faster and more often thanks to these improvements. Building VS Code now takes half as much time as before:

Electron 11 update

In this milestone, we finished the exploration to bundle Electron 11 into VS Code, thanks to everyone involved with testing and self-hosting on insiders. This is a major Electron release and comes with Chromium 87.0.4280.141 and Node.js 12.18.3.

Breaking change

As a side effect of this update, we had to bump our build image to use for linux machines to consume Electron. This update raised the minimum GLIBCXX requirement to for our native modules, which breaks support for older distros on desktop. After some changes to the build system, we were able to go back as far as using gcc-5 toolchain, which brings the minimum GLIBCXX requirement to . With these changes, the following are the distros known to work for the desktop app:

  • Ubuntu 16.04 and newer
  • Fedora 24 and newer
  • Debian 9 and newer
  • CentOS 8 and newer

Note: Our remote development components continue to use GLIBCXX , so there is no change in supported platforms.

A workaround for the other distros would be to install gcc-5 or higher toolchain to avoid the GLIBCXX error with native modules, but there is no guarantee that all components of the runtime will work fine. There is also the option of using our remote development suite to work with the older distros.

Apple Silicon Insiders

Thanks to Electron 11, we continue to make progress on fully supporting Apple Silicon. For the Insiders build, we offer three variations of downloads under macOS:

  • version for Mac devices with Intel chip
  • version for Mac devices with Apple Silicon chip
  • version that can run natively on either of the above devices

The version is the default download option on the website. We will work towards removing the architecture specific downloads later this year. More updates on this will follow in upcoming iterations.

Universal apps are created by bundling both and version of the apps, hence there is a significant increase in download size for the first install but simplifies the transition for a user to the new Apple Silicon Macs.

Note: We originally planned to push the Apple Silicon builds to Stable this iteration. However, late in the iteration, users reported that on macOS Big Sur 11.2 loading a WASM module crashed the extension host. You can follow along with our investigation of the problem in the upstream issue #115646.

Debian repository migration

In order to support x64, ARM, and ARM 64-bit architectures in a single repository, we have moved to a new repository location:

The VS Code Debian packages will automatically migrate your system to the new repository, so there’s no adoption necessary.

Progress on Electron sandbox

This milestone we continued to make the VS Code window fit for enabling Electron’s sandbox and context isolation.

Specifically:

  • The IPC connection to our background shared process changed from a Node.js socket connection to using Electron’s MessagePort API.
  • There is a new internal option to enable the experimental protocol for the main window that enables us to do some selfhosting (the issue reporter and process explorer already run with this option since last milestone).
  • We removed the more direct Node.js API that is used in the VS Code window.

Запускаем код!

Для запуска нашего кода мы будем использовать расширение Code Runner, потому что ручная настройка VS Code для каждого языка — весьма сложная задача и потребует много затрат времени и сил.

Прежде чем использовать это расширение, нам нужно настроить его так, чтобы оно работало через терминал, иначе мы не сможем обеспечить консольный ввод нашего кода

Эти шаги очень важно проделать в точности:

  • Выберите File -> Preferences -> Settings.
  • Введите “code runner run in terminal” в поле поиска и установите галку в чекбоксе:

Добавьте флаг -std=c++14.

По умолчанию Code Runner не добавляет флаг -std=c++14 при компиляции кода. Это ограничивает ваши возможности как программиста. Например, если вы попытаетесь сделать так:

То это вызовет предупреждение: “Расширенные списки инициализаторов доступны только с -std=c++11 или -std=gnu++11”. 

Выполните следующие действия, чтобы добавить флаг:

  • Выберите File -> Preferences -> Settings.
  • Введите в поиске “Run Code Configuration”.
  • Определите местонахождение “Code-runner: Executor Map” и выберите “Edit in settings.json”. Это откроет файл settings.json. Добавьте туда следующий код:

Сохраните изменения — и готово!

Наконец-то всё настроено для запуска ваших программ на C++, Java и Python.

Откройте файл main.cpp. Нажмите правую кнопку мыши и выберите опцию Run Code. Попробуйте напечатать что-нибудь в функции solve(), чтобы проверить, происходит ли у вас вывод в файл output.txt или нет.

Следуйте той же процедуре с файлами Main.java и main.py. Расширение Code Runner возьмет на себя выполнение каждого из них.

Я надеюсь, что эта статья помогла вам настроить Visual Studio Code. Счастливого программирования! 

  • Проекты на Python с помощью Visual Studio Code
  • 10 рекомендаций по ускорению рабочего процесса в Visual Studio Code
  • Как настроить отладчик для Chrome extension в Visual Studio Code

Перевод статьи Chinmay Kulkarni: “How to Setup Visual Studio Code for C, C++, Java, Python | Competitive Programming”

Advanced: Opening a WSL 2 folder in a container

If you are using WSL 2 and Docker Desktop’s WSL 2 back-end, you can use the Remote — Containers extension to work with source code stored inside WSL! Just follow these steps:

  1. If you have not already, install and setup Docker Desktop’s WSL 2 support.

  2. If you have not already, install the Remote — Containers extension along with the WSL extension.

  3. Next, as you would normally.

  4. Once your folder is open in WSL, select Remote-Containers: Reopen Folder in Container from the Command Palette (F1).

  5. If the folder does not have a file in it, you’ll be asked to pick a starting point from a filterable list or an existing Dockerfile or (if one exists).

  6. The VS Code window (instance) will reload and start building the dev container. A progress notification provides status updates.

  7. After the build completes, VS Code will automatically connect to the container. You can now work with the your source code from inside the container.

See the Remote — Containers documentation for more information.

Интерфейс Visual Studio Code

При первом запуске перед нами отобразится окно приветствия, через которое можно получить быстрый доступ к ранее запущенным проектам либо создать новые. Весь интерфейс на английском языке (всего в несколько кликов он переводится на русский, но об этом чуть позже). Давайте пока разберемся с интерфейсом: откроем для примера файл с кодом, посмотрим, как его идентифицирует программа без предварительных настроек, и разберем каждый блок утилиты.

Запустить файл с кодом мы можем через правый клик мыши -> Открыть с помощью Code. Файл можно открыть и в программе: для этого в верхнем правом углу выбираем «File» и жмем «Open File…». После этого переходим в нужную директорию и выбираем файл.

В результате перед нами отобразится окно с кодом из файла. Давайте визуально разделим интерфейс на блоки и рассмотрим каждый из них более детально.

Первое, что бросается в глаза, – это блок кода, для которого отведено больше всего места. Название функций и прочее подсвечено разными цветами. Здесь же указан путь до файла, а чуть выше расположены вкладки-файлы, по которым можно перемещаться. С помощью них мы можем добавлять не просто один файл с кодом, а целый проект.

Следующий блок – левая панель управления, включающая в себя 5 основных вкладок: «Проводник», «Поиск», «Система управления версиями», «Запуск кода» и «Расширения». Первая предоставляет пользователю возможность просматривать содержимое проекта и быстро перемещаться внутри него.

Вторая вкладка – поиск. Используется для нахождения слов в документе. Он также может быть запущен с помощью комбинации клавиш «CTRL+SHIFT+F». Алгоритм использования довольно прост – вводим название в поиск и смотрим результат.

Система управления версиями – предназначена для взаимодействия с git.

Запустить и проверить работоспособность кода мы можем в следующей вкладке:

Еще одна важная вкладка, с помощью которой из Visual Studio Code можно сделать функциональную утилиту, это «Расширения». В ней находятся установочники для всех популярных инструментов, используемых разработчиками.

Следующий блок – нижний статус-бар. В нем отображается общая информация о состоянии программы

Обратите внимание, что VS Code автоматически определяет язык программирования и информирует нас об этом

И еще один раздел – правая панель, включающая в себя небольшой дисплей, который отображает код в уменьшенном варианте, а также позволяет удобно скроллить внутри него. Здесь же мы можем разделить окно кода на несколько столбцов, а также закрыть все файлы одним кликом – для этого используются две верхние кнопки.  

Как видите, если пройтись по интерфейсу программы, то она уже не кажется такой сложной. Чтобы сделать все еще проще, давайте проведем русификацию всех элементов интерфейса. О том, как это сделать, поговорим далее.

Debugging

Breakpoints can be shown in overview ruler

To make life easier when working with breakpoints in large files, you can now show breakpoints in the editor‘s overview ruler by enabling the new setting .

PreLaunch tasks for compound debug configurations

Today every debug configuration can specify a task to be run before the debug session is started via the attribute. This works well when debugging a single program, but it gets unwieldy when using compound configurations where multiple programs are involved.

In this milestone, we’ve added support for a per compound debug configuration. With this addition, a single task can build all debug targets before the individual debug sessions are started. In case of a build error, no session is started.

Debugging

Configurable External Terminal

Running a debug target in an external terminal is now provided as a VS Code service to debugger extensions and we hope that this will result in widespread adoption. A useful side effect of this is that it is now possible to configure which terminal program to use via the existing , , and settings.

Launch configuration supports ‘npm’ and other tools

A frequent feature request was to support running ‘npm’ scripts directly from a launch configuration. This is now possible by the following changes to the existing launch configuration concepts:

  • Any program available on the PATH (for example ‘npm’, ‘mocha’, ‘gulp’, etc.) can now be used for the attribute and arguments can be passed via .
  • The attribute is no longer mandatory which helps if the npm script already specifies the program to launch.
  • If you specify a debug port via the attribute, the attribute will no longer be automatically added because the debug port is typically specified by the npm scripts as well.

Let’s look at an ‘npm’ example. If your has a ‘debug’ script, for example:

the corresponding launch configuration would look like this:

Glob pattern support for Source Map setup

When debugging transpiled code (for example TypeScript) where your build process generates JavaScript code into a specific directory, it is necessary to help the Node.js debugger finding the generated code. In previous version of VS Code, this was done by specifying the root directory of the generated source code via the attribute.

In the September release, it is now possible to use multiple glob patterns for including and excluding files from the set of generated JavaScript files. For this, a new array typed attribute has been introduced. The old is still supported, but we plan to deprecate this in the future.

The following example shows how to configure source maps if the generated code lives in an «out» and «node_modules» directory and you want to exclude the generated test code:

Experimental Node Debugger

We now have an experimental debug extension that uses the V8 Inspector Protocol, which Node.js now exposes via the flag, only in Node.js versions 6.3+. This is the same protocol exposed by Chrome and other targets. This extension runs on the vscode-chrome-debug-core library which also powers the Debugger for Chrome extension, and several others.

This extension will eventually have feature-parity with vscode-node-debug, but isn’t there yet. An overview is recorded here and you can see issues in the vscode-node-debug2 repo and the vscode-chrome-debug-core repo. For the most part, you should be able to set in your existing Node.js launch configuration and have things work the same, as long as it’s running in Node.js v6.3+.

Preview features

Search in open editors

This release comes with experimental support for searching in open editors, which has been a highly requested feature for some time. This feature is enabled by default in Insiders, and can be enabled with the setting in Stable.

Theme: GitHub Light Theme

TypeScript 4.2 support

This release continues to improve our support for the upcoming TypeScript 4.2 release. You can read more about the new language features and improvements in TypeScript 4.2 on the TypeScript blog. Here are some of the editor improvements it enables:

  • JS Doc templates now generate .
  • Deprecated DOM APIs are now marked as such.
  • A quick fix to declare missing functions.
  • Native support for semantic highlighting, instead of using a TypeScript service plugin.

To start using the TypeScript 4.2 nightly builds, just install the TypeScript Nightly extension. Please share your feedback and let us know if you run into any bugs with TypeScript 4.2.

New Find References to File command

If you are using TypeScript 4.2, you can also try the new Find References to File command for JavaScript and TypeScript to find all places where a file is being referenced.

You can trigger this command in a few different ways:

  • For the active file using TypeScript: Find File References command.
  • Right-click on an editor tab and select Find File References.
  • Right-click on a file in the File Explorer and select Find File References.

Miscellaneous

New location for dirty indicator when Tabs are disabled

We decided to move the dirty (unsaved file) indicator over to the Close button when Tabs (tabbed headers) are disabled. This makes the experience consistent with other places where we replace the Close button with the dirty indicator (for example, inside OPEN EDITORS or when Tabs are enabled).

Electron update

In this release, we decided to take a major update of the Electron framework. We now run with version 1.3.7 which brings big version increments to the Chrome rendering engine (from 49 to 52) and Node.js (from 5.10.0 to 6.5.0). This also means that all extensions can expect the full Node.js 6.5.0 runtime when running in this VS Code release. For a full list of changes in Node.js, please refer to the Node.js Changelog.

Detecting a corrupt installation

We have found ourselves spending many hours investigating VS Code issues that were ultimately caused by corrupt VS Code installations. Some extensions directly modify (patch) the VS Code product in such a way that is semi-permanent (until the next update) and this can cause hard to reproduce issues.

We have therefore added a background check where we try to detect if the VS Code bits have been changed on disk. We are not trying to block VS Code patching, but we want to raise awareness that patching VS Code means you are running an unsupported version.

Built-in Extensions

It is now possible to bundle a selection of Marketplace extensions with VS Code. These extensions appear as Built-in extensions. This allows us to decouple bundled extension development from VS Code’s core development.

Improvements in Issue Reporting

Related to this, we often investigate issues that are caused by an installed extension. To help us with these investigations, we have enriched the Help > Report Issues action to seed the issue description with the list of installed extensions.

Please use this action when reporting issues so we have more information to help track down the problem and ultimately resolve the issue for you quicker.

macOS Sierra support

Apple recently released the final version of macOS Sierra and with the Electron update, we were able to fix some issues we had seen (fonts and icons did not look sharp on a Retina display). However, some users are seeing bad background artifacts in the editor the underlying issue is Chrome related and it seems to happen when you are using a custom color profile. There is a workaround, you can run VS Code with forced GPU rasterization to mitigate this issue:

Extension authoring

AccessibilityInformation

We have finalized the in the , , and elements to support screen readers. contains a and a . The is read out by a screen reader once the item has focus. of the item defines how a screen reader interacts with it. The should be set in special cases when, for example, a tree-like element behaves like a checkbox. If is not specified, VS Code will pick the appropriate automatically.

Fallback message for «go to location»

The command can now show a fallback message when no locations could be found. This allows extensions to implement features like Go to Super Type that behave just like built-in features, for example Go to Definition. The snippet below is a full sample of an extension invoking this command:

Guidelines for improving the single file debug experience

For debug extensions that want to improve the single file debug experience by adding a «Run» and/or «Debug» button to the editor, we recommend following these guidelines for a consistent look and feel:

  • Contribute Run and/or Debug commands in the package.json (see ):
    • Use the command titles «Run File»/»Debug File» or «Run Python File»/»Debug Python File».
    • Use the icon for Run and for Debug.
  • Add the commands to the editor title area ():
    • To make the commands only visible for specific languages use a «when» clause, for example, .
    • Put the Run command in the group and the Debug command in the group.

CodeActionProviderMetadata.documentation

The new property on lets extension provide static documentation for the code actions they return. This documentation is shown at the bottom of the list of code actions when the provide returns a code action:

A command is executed when the user selects the documentation entry. This command can show the documentation in the editor or open it in a browser.

Open and Save dialog title

The API for providing a for Open and Save file dialogs via the and has been finalized. Note that not all operating systems allow this title to be set, so the behavior may differ depending on where your extension is running.

New extension categories

You can now use following newly added categories to categorize your extensions.

  • Data Science
  • Machine Learning
  • Visualization
  • Testing
  • Notebooks

You can now add to the list of badges of a published extension, since was added to the .

Enabling Proposed API through argv.json

The field is now supported in . This allows extension authors to run their proposed API extension in released builds for long-term dogfooding, without needing to open VS Code via the command line and pass the CLI flag.

Getting started

Note: After reviewing this topic, you can get started with the introductory WSL tutorial.

Installation

To get started, you need to:

  1. Install the Windows Subsystem for Linux along with your preferred Linux distribution.

  2. Install Visual Studio Code on the Windows side (not in WSL).

  3. Install the Remote Development extension pack.

From the WSL terminal

Opening a folder inside the Windows Subsystem for Linux in VS Code is very similar to opening up a Windows folder from the command prompt or PowerShell.

  1. Open a WSL terminal window (using the start menu item or by typing from a command prompt / PowerShell).

  2. Navigate to a folder you’d like to open in VS Code (including, but not limited to, Windows filesystem mounts like )

  3. Type in the terminal. When doing this for the first time, you should see VS Code fetching components needed to run in WSL. This should only take a short while, and is only needed once.

  4. After a moment, a new VS Code window will appear, and you’ll see a notification that VS Code is opening the folder in WSL.

    VS Code will now continue to configure itself in WSL and keep you up to date as it makes progress.

  5. Once finished, you now see a WSL indicator in the bottom left corner, and you’ll be able to use VS Code as you would normally!

That’s it! Any VS Code operations you perform in this window will be executed in the WSL environment, everything from editing and file operations, to debugging, using terminals, and more.

From VS Code

Alternatively, you can open a Remote WSL window directly from VS Code:

  1. Start VS Code.
  2. Press F1, select Remote-WSL: New Window for the default distro or Remote-WSL: New Window using Distro for a specific distro.
  3. Use the File menu to open your folder.

If you already have a folder open, you can also use the Remote-WSL: Reopen in WSL command. You will be prompted which distro to use.

If you are in a WSL window and want to open the current input in a local window, use Remote-WSL: Reopen in Windows.