Visual Studio Code (Русский)

From ArchWiki
Jump to navigation Jump to search

Tango-preferences-desktop-locale-modified.pngПеревод этой статьи или раздела не отражает оригинальное содержание.Tango-preferences-desktop-locale-modified.png

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

Visual Studio Code — кроссплатформенный, бесплатный и свободный (используется лицензия MIT) текстовый редактор, разрабатываемый Microsoft. Он использует фреймворк Electron и поддерживает расширения, список которых можно найти на странице магазина расширений или в самом редакторе. Несмотря на то, что проект является открытым, Microsoft также распространяет проприетарные сборки с пользовательским соглашением (EULA), см. объяснение в репозитории GitHub.

Установка

Редактор VSCode доступен для установки с помощью следующих пакетов:

  • code — свободная сборка
  • visual-studio-code-binAUR — проприетарная сборка Microsoft
  • visual-studio-code-insidersAUR — проприетарная сборка Microsoft с ежедневными обновлениями
  • code-gitAUR — свободная сборка (нестабильная версия для разработчиков)
  • vscodium-binAUR — свободная сборка со стандартной конфигурацией, поддерживаемой сообществом

Утилита ptvsd (Python Tools for Visual Studio Debug) предоставляется пакетом python-ptvsdAUR.

Использование

Запустите командой code (code-git для пакета code-gitAUR).

Если требуется запустить несколько экземпляров приложения, добавьте ключ -n без параметров.

Конфигурация

Пакет code хранит конфигурацию в файле ~/.config/Code - OSS/User/settings.json.

Пакет visual-studio-code-binAUR хранит конфигурацию в файле ~/.config/Code/User/settings.json.

Встроенный терминал

Меню Вид > Терминал или Ctrl + ` открывает встроенный терминал. По умолчанию используется Bash без каких-либо параметров, но настройки, указанные далее позволяют изменить данное взаимодействие.

  • terminal.integrated.shell.linux устанавливает терминал по умолчанию
  • terminal.integrated.shellArgs.linux устанавливает передаваемые в терминал аргументы

Например, установить по умолчанию fish с параметрами.

~/.config/Code/User/settings.json
"terminal.integrated.shell.linux": "/usr/bin/fish",
"terminal.integrated.shellArgs.linux": ["--login","--debug-level 3"]

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

Внешний терминал

Если вы используете Terminator как терминал по умолчанию, у вас могут возникнуть проблемы в VS Code с ошибками вида: Unable to launch debugger worker process (vsdbg) through the terminal. spawn truecolor ENOENT, поэтому следует сменить терминал на другой, например, gnome-terminal.

Строка настроек "terminal.external.linuxExec": "имя терминала" установит терминал на требуемый. Пример установки gnome-terminal:

~/.config/Code/User/settings.json
"terminal.external.linuxExec": "gnome-terminal"

Решение проблем

Глобальное меню не работает в KDE Plasma

Visual Studio Code использует D-Bus для меню, поэтому для него следует установить пакет libdbusmenu-glib.

Невозможно переместить объект в корзину

По умолчанию все приложения, использующие Electron, используют gio (из пакета glib2) для удаления. Конфигурирование утилиты происходит через установку переменной окружения ELECTRON_TRASH.

Например, для Plasma:

$ ELECTRON_TRASH=kioclient5 code

Однако, в новых версиях Electron поддерживает и kioclient5, и kioclient, и trash-cli, и gio (по умолчанию), и gvfs-trash (отмечен устаревшим). Смотрите также страницу environment-variables в GitHub репозитории Electron.

Невозможно отладить C#

Для отладки приложений на C# (платформа .NET) испольуется расширение OmniSharp, которое требует проприетарный компонент .NET Core Debugger (смотри пакеты в разделе установка). Смотри также объяснение в репозитории GitHub.

Если вы используете свободный пакет, отладка упадёт почти незаметно, лишь оставив в консоли сообщение:

You may only use the Microsoft .NET Core Debugger (vsdbg) with
Visual Studio Code, Visual Studio or Visual Studio for Mac software
to help you develop and test your applications.

Для отладки в свободном пакете можно использовать пакет netcoredbgAUR. Чтобы использовать его для отладки проектов, требуется в настройке проекта указать соответствующую конфигурацию, например:

./.vscode/launch.json
"configurations": [
    {
...
    "pipeTransport": {
        "pipeCwd": "${workspaceFolder}",
        "pipeProgram": "/usr/bin/bash",
        "pipeArgs": ["-c"],
        "debuggerPath": "/usr/bin/netcoredbg"
    }
...

Невозможно открыть .csproj с сервером OmniSharp, ошибка расположения Microsoft.Common.props

Требуется сменить путь к SDK. Вот, как выглядит файл до изменений.

/opt/dotnet/sdk/{VERSION}/Sdks/Microsoft.NET.Sdk/Sdk/Sdk.props
$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props

Вот, как выглядит файл после изменения.

/opt/dotnet/sdk/{VERSION}/Sdks/Microsoft.NET.Sdk/Sdk/Sdk.props
/opt/dotnet/sdk/{VERSION}/Current/Microsoft.Common.props

OmniSharp не может обнаружить MSBuild

На странице OmniSharp introduction в GitHub написано, что пользователям Arch Linux требуется установить mono-msbuild. Ошибка, которая появляется при отсутствии пакета:

OmniSharp Log
[info]: OmniSharp.MSBuild.Discovery.MSBuildLocator
        Registered MSBuild instance: StandAlone 15.0 - "~/.vscode/extensions/ms-vscode.csharp-1.18.0/.omnisharp/1.32.11/omnisharp/msbuild/15.0/Bin"
            MSBuildExtensionsPath = /usr/lib/mono/xbuild
            BypassFrameworkInstallChecks = true
            CscToolPath = ~/.vscode/extensions/ms-vscode.csharp-1.18.0/.omnisharp/1.32.11/omnisharp/msbuild/15.0/Bin/Roslyn
            CscToolExe = csc.exe
            MSBuildToolsPath = ~/.vscode/extensions/ms-vscode.csharp-1.18.0/.omnisharp/1.32.11/omnisharp/msbuild/15.0/Bin
            TargetFrameworkRootPath = /usr/lib/mono/xbuild-frameworks
System.TypeLoadException: Could not load type of field 'OmniSharp.MSBuild.ProjectManager:_queue' (13) due to: Could not load file or assembly 'System.Threading.Tasks.Dataflow, Version=4.5.24.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies.
...

Возможно, потребуется собрать пакет самостоятельно.

«Повторить попытку в режиме Sudo» не работает

К сожалению, пакет code не поддерживает эту функцию в полной мере, так как официально Microsoft не поддерживает пакет для Arch Linux. Смотри также FS#61516 или тикет на GitHub.

Пакет visual-studio-code-binAUR не имеет данной проблемы.

remote-containers.openFolder не найдена

Для решения проблемы требуется открыть VS Code со включённым API remote-containers (см. баг FS#63374)

$ code-oss --enable-proposed-api ms-vscode-remote.remote-containers

VS Live Share missing API

Пакет code не имеет некоторых API, которые нужны для работы расширения Live Share. Вот ошибка, которая появляется при такой проблеме:

[VS Code] [ms-vsliveshare.vsliveshare]: Proposed API is only available when running out of dev or with the following command line switch: --enable-proposed-api ms-vsliveshare.vsliveshare

Следуя инструкции на Microsoft Docs, есть разные решения:

  1. установить проприетарные пакеты visual-studio-code-binAUR или visual-studio-code-insidersAUR
  2. добавить секцию extensionAllowedProposedApi в usr/lib/code/product.json
"extensionAllowedProposedApi": [
    "ms-vsliveshare.vsliveshare",
    "ms-vscode.node-debug",
    "ms-vscode.node-debug2"
]