
Visual Studio 2019 изначально поддерживает C#, C++, Visual Basic и F#, однако расширить список доступных языков можно за счёт установки SDK, расширений или сторонних инструментов. Например, для Python используется официальный пакет Python development workload, а для Rust – расширение Rust for Visual Studio, интегрирующее компилятор и систему Cargo.
Процесс добавления нового языка состоит из двух основных этапов: установка необходимых инструментов (компилятор, интерпретатор, SDK) и подключение поддержки к Visual Studio через Visual Studio Installer или Marketplace. Без компилятора IDE не сможет выполнять сборку, даже если подсветка синтаксиса уже работает.
Для управления расширениями используется меню Extensions → Manage Extensions, где можно найти пакеты для TypeScript, R, Go и других языков. В случае отсутствия готового решения остаётся возможность подключить язык через TextMate Grammar для подсветки синтаксиса или разработать собственное расширение с использованием Visual Studio SDK.
Поиск и установка расширения для поддержки языка

Откройте меню Extensions → Manage Extensions в Visual Studio 2019. В левом блоке выберите Online, чтобы получить доступ к каталогу расширений из Visual Studio Marketplace.
В поле поиска введите название языка, например Rust или Go. Обратите внимание на количество установок и рейтинг расширения – это прямой индикатор его актуальности и стабильности.
Нажмите Download рядом с выбранным пакетом. Установка произойдёт после перезапуска среды. Если расширение требует дополнительных инструментов (например, компилятора или SDK), Visual Studio отобразит уведомление с ссылкой на их установку.
Проверить успешное подключение можно через File → New → Project. В списке шаблонов должны появиться проекты с поддержкой нового языка.
Настройка проекта с использованием нового языка

После установки расширения, регистрирующего новый язык, в Visual Studio необходимо вручную создать шаблон проекта. Для этого в каталоге %USERPROFILE%\Documents\Visual Studio 2019\Templates\ProjectTemplates создаётся структура с файлом .vstemplate, описывающим имя, GUID и поддерживаемые файлы.
Внутри .vstemplate указываются расширения исходников (например, .mylang), инициализационный файл проекта и путь к сборочной логике. Без этих параметров среда не сможет правильно распознать язык и предложить его в мастере создания проектов.
Для корректной работы отладки рекомендуется внедрить адаптер запуска (Debug Adapter), определяющий протокол обмена с отладчиком. Конфигурация хранится в launchSettings.json внутри папки Properties. Здесь задаются параметры запуска интерпретатора или виртуальной машины нового языка.
Финальная проверка выполняется через создание тестового проекта: открывается мастер, выбирается пользовательский шаблон, добавляется файл с расширением нового языка и проверяется успешный запуск сборки и отладки. При отсутствии ошибок язык полностью интегрирован в рабочий процесс Visual Studio 2019.
Добавление шаблонов файлов и проектов для языка

Visual Studio использует механизм .vstemplate для описания шаблонов. Каждый шаблон состоит из файлов исходного кода, конфигурационного XML и манифеста, указывающего IDE, как отображать и применять шаблон.
Чтобы подключить шаблон для нового языка:
| Шаг | Действие |
|---|---|
| 1 | Создать структуру папок %USERPROFILE%\Documents\Visual Studio 2019\Templates\ProjectTemplates\ИмяЯзыка\ или ItemTemplates для файлов. |
| 2 | Подготовить исходный файл или проект (например, Program.myext), который станет основой шаблона. |
| 3 | Создать файл .vstemplate с описанием шаблона: название, идентификатор, расширение языка (FileExtension), категории. |
| 4 | Упаковать файлы в .zip вместе с .vstemplate и поместить архив в соответствующую папку. |
| 5 | Перезапустить Visual Studio и проверить наличие шаблона в диалоге «Создать проект» или «Добавить новый элемент». |
В .vstemplate необходимо задать атрибут DefaultName, чтобы IDE предлагала корректное имя файла, и ProjectType, соответствующий зарегистрированному GUID языка. Для проектов допустимо указывать несколько исходных файлов и конфигурационные элементы (References, ProjectItems).
При создании шаблонов рекомендуется использовать параметры $safeitemname$, $projectname$, $targetframeworkversion$, что позволяет IDE автоматически подставлять значения при генерации кода.
Интеграция компилятора или интерпретатора в Visual Studio
Для подключения стороннего компилятора или интерпретатора необходимо задать путь к его исполняемому файлу в настройках проекта. В Visual Studio 2019 это выполняется через меню Project → Properties → Configuration Properties → General, где в поле Platform Toolset выбирается External Build Tools или указывается пользовательский путь.
Если язык использует интерпретатор (например, Python или Lua), его запуск настраивается через Configuration Properties → Debugging, где в поле Command прописывается путь к интерпретатору, а в Script Arguments – файл исходного кода и необходимые параметры.
Для компилируемых языков требуется настройка цепочки сборки. Это выполняется в разделе Configuration Properties → NMake: в параметре Build Command Line указывается команда компиляции, в Rebuild Command Line – команда пересборки, а в Clean Command Line – команда очистки артефактов.
Чтобы обеспечить интеграцию с IntelliSense, необходимо настроить правила обработки исходников. В меню Tools → Options → Text Editor → File Extension можно сопоставить расширение файлов с существующим языковым сервисом или подключить собственный .vsix-пакет, реализующий поддержку синтаксиса и подсветки.
Для ускорения запуска рекомендуется добавить переменные окружения с путями к библиотекам и стандартным модулям через Project → Properties → VC++ Directories или глобально в настройках системы. Это позволяет компилятору или интерпретатору корректно находить зависимости без ручного указания путей.
Подключение подсветки синтаксиса и IntelliSense

Для интеграции нового языка в Visual Studio 2019 необходимо определить правила разметки кода и подключить движок IntelliSense. Минимальный набор шагов включает регистрацию синтаксиса, настройку классификаторов текста и реализацию провайдера подсказок.
- Создайте проект VSIX с шаблоном Editor Classifier. В файле
Classifier.csопишите ключевые токены (ключевые слова, идентификаторы, комментарии). - В манифесте расширения (
source.extension.vsixmanifest) укажите MIME-тип нового языка и свяжите его с классификатором. - Для подсветки используйте
IClassificationTypeи зарегистрируйте цветовые категории черезClassificationFormatDefinition.
Интеграция IntelliSense выполняется через MEF-компоненты:
- Реализуйте интерфейс
ICompletionSourceProviderдля генерации списка автодополнений. - Добавьте
IQuickInfoSourceдля отображения справки при наведении на элемент кода.
Отладка и запуск программ на новом языке
Чтобы обеспечить запуск, необходимо создать собственный адаптер отладки (Debug Adapter), совместимый с протоколом Visual Studio Debug Adapter Host. Он отвечает за обмен данными между процессом языка и интерфейсом IDE, включая точки останова, просмотр переменных и управление потоками.
Для запуска программ добавьте новый тип проекта через .vsix-пакет или расширение Language Service. В файле .targets укажите задачу сборки и команду запуска интерпретатора или компилятора, а также настройте передачу аргументов и рабочий каталог.
При интеграции с системой отладки настройте привязку команд «Start Debugging» и «Start Without Debugging» к вашему адаптеру. Это позволит использовать стандартные сочетания клавиш и меню Visual Studio без необходимости ручного запуска внешних процессов.
Рекомендуется реализовать поддержку отображения локальных переменных, стеков вызовов и точек останова через JSON-RPC взаимодействие с IDE. Для сложных языков добавьте поддержку условных точек останова и пошагового выполнения по выражениям.
Вопрос-ответ:
Можно ли добавить поддержку собственного языка в Visual Studio 2019 без установки готовых расширений из Marketplace?
Да, это возможно. Для этого используется механизм Visual Studio SDK. С его помощью можно создать расширение, которое добавит подсветку синтаксиса, автодополнение, шаблоны проектов и другие функции. Придётся самостоятельно описать грамматику языка, а также реализовать обработчики для интеграции с редактором и системой сборки.
Какие минимальные возможности я могу реализовать для нового языка, чтобы он корректно работал в редакторе?
Минимальный набор обычно включает подсветку синтаксиса и базовую структуру проектов. Подсветка задаётся через файлы .vsix с определёнными правилами разметки. Если нужно, можно добавить автодополнение ключевых слов, простую проверку ошибок и шаблоны файлов. Такой набор позволит удобно писать код даже без глубокой интеграции с компилятором.
Можно ли использовать Roslyn для интеграции нового языка?
Roslyn применяется только для C# и Visual Basic, так что напрямую он не подойдёт. Для других языков необходимо использовать свой парсер и генератор синтаксического дерева. Тем не менее, архитектурные принципы Roslyn можно взять за основу: разбиение на синтаксический анализ, семантический анализ и сервисы для редактора.
Сложно ли связать новый язык с системой сборки Visual Studio?
Это зависит от того, как устроен ваш язык. Если у него уже есть отдельный компилятор, можно интегрировать его через MSBuild, прописав нужные задачи и таргеты. В таком случае сборка будет работать как для стандартных проектов. Если компилятора нет, придётся писать собственный набор задач для сборки и отладки.
Поддерживает ли Visual Studio 2019 отладку для сторонних языков?
Да, но для этого нужно реализовать так называемый Debug Engine. Это отдельный модуль, который связывает процесс выполнения программы с инструментами отладки в Visual Studio. Настройка достаточно трудоёмкая: необходимо обработать точки останова, просмотр переменных, пошаговое выполнение. Если язык исполняется через существующую виртуальную машину или платформу, можно попробовать использовать готовый движок с небольшими доработками.
