Не удалось найти код сборки задачи Visual Studio

Обновлено: 21.11.2024

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

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

Настройте кодовую базу вне проекта, используя следующие файлы .json:

Имя файла Назначение
tasks.vs. json Указание пользовательских команд сборки и переключателей компилятора, а также произвольных (не связанных со сборкой) задач.
Доступ осуществляется через пункт контекстного меню «Настроить задачи» в обозревателе решений.
launch.vs.json Укажите аргументы командной строки для отладки.
Доступ через правой кнопкой мыши в обозревателе решений пункт меню Параметры отладки и запуска.

Эти файлы .json расположены в скрытой папке с именем .vs в корневой папке вашей кодовой базы. Файлы tasks.vs.json и launch.vs.json создаются Visual Studio по мере необходимости, когда вы выбираете «Настроить задачи» или «Параметры отладки и запуска» на файл или папку в обозревателе решений. Эти файлы .json скрыты, поскольку пользователи обычно не хотят возвращать их в систему управления версиями. Однако, если вы хотите иметь возможность вернуть их в систему управления версиями, перетащите файлы в корень вашей кодовой базы с помощью вашей файловой системы, где они будут видны в обозревателе решений и в системе управления версиями.

Чтобы просмотреть скрытые файлы в Visual Studio, нажмите кнопку "Показать все файлы" на панели инструментов обозревателя решений.

Определение задач с помощью tasks.vs.json

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

При этом создается (или открывается) файл tasks.vs.json в папке .vs. Вы можете определить задачу сборки или произвольную задачу в этом файле, а затем вызвать ее, используя имя, которое вы дали ей из контекстного меню обозревателя решений.

Пользовательские задачи можно добавлять к отдельным файлам или ко всем файлам определенного типа. Например, для файлов пакетов NuGet можно настроить задачу «Восстановить пакеты» или для всех исходных файлов можно настроить задачу статического анализа, например линтер для всех файлов .js.< /p>

Определение пользовательских задач сборки

Если в вашей кодовой базе используются настраиваемые инструменты сборки, которые Visual Studio не распознает, вы не сможете запускать и отлаживать код в Visual Studio, пока не выполните некоторые действия по настройке. Visual Studio предоставляет задачи сборки, с помощью которых вы можете указать Visual Studio, как собирать, перестраивать и очищать код. Файл задачи сборки tasks.vs.json связывает внутренний цикл разработки Visual Studio с пользовательскими инструментами сборки, используемыми вашей кодовой базой.

Для такого makefile, который содержит цели сборки, очистки и перестроения, можно определить следующий файл tasks.vs.json. Он содержит три задачи сборки для построения, перестроения и очистки кодовой базы с использованием NMAKE в качестве инструмента сборки.

После определения задач сборки в tasks.vs.json в соответствующие файлы в обозревателе решений добавляются дополнительные элементы контекстного меню (контекстное меню). В этом примере параметры «сборка», «перестроение» и «очистка» добавляются в контекстное меню любых файлов makefile.

Команды отображаются в контекстном меню под командой «Настроить задачи» из-за их настроек contextType. "build", "rebuild" и "clean" являются командами сборки, поэтому они отображаются в разделе сборки в середине контекстного меню.

При выборе одного из этих параметров задача выполняется. Вывод отображается в окне «Вывод», а ошибки сборки отображаются в списке ошибок.

Определить произвольные задачи

Вы можете определить произвольные задачи в файле tasks.vs.json, чтобы делать практически все, что вы хотите. Например, вы можете определить задачу для отображения имени текущего выбранного файла в окне вывода или для отображения списка файлов в указанном каталоге.

В следующем примере показан файл tasks.vs.json, определяющий одну задачу. При вызове задача отображает имя выбранного в данный момент файла .js.

  • taskName указывает имя, которое появляется в контекстном меню.
  • appliesTo указывает, к каким файлам можно применить команду.
  • Свойство command указывает вызываемую команду. В этом примере переменная среды COMSPEC используется для идентификации интерпретатора командной строки, обычно cmd.exe.
  • Свойство args указывает аргументы, которые будут переданы вызванной команде.
  • Макрос $ извлекает выбранный файл в обозревателе решений.

После сохранения файла tasks.vs.json можно щелкнуть правой кнопкой мыши любой файл .js в папке и выбрать имя файла Echo. Имя файла отображается в окне вывода.

Если в вашей кодовой базе нет файла tasks.vs.json, вы можете создать его, выбрав «Настроить задачи» в контекстном меню файла в обозревателе решений.

В следующем примере определяется задача, в которой перечислены файлы и подпапки каталога bin.

  • $ — это настраиваемый макрос, который сначала определяется перед блоком задач. Затем он вызывается в свойстве args.

Эта задача применяется ко всем файлам. Когда вы открываете контекстное меню любого файла в обозревателе решений, в нижней части меню появляется имя задачи «Список выходных данных». Когда вы выбираете «Список выходных данных», содержимое каталога bin отображается в окне «Вывод» в Visual Studio.

Область настройки

Несколько файлов tasks.vs.json могут находиться в корневом каталоге и подкаталогах кодовой базы. Этот дизайн обеспечивает гибкость для различного поведения в разных подкаталогах кодовой базы. Visual Studio объединяет или переопределяет параметры по всей кодовой базе, расставляя приоритеты файлов в следующем порядке:

  • Файлы настроек в каталоге .vs корневой папки.
  • Каталог, в котором вычисляется параметр.
  • Родительский каталог текущего каталога, вплоть до корневого каталога.
  • Файлы настроек в корневом каталоге.

Эти правила агрегирования применяются к tasks.vs.json. Сведения о том, как объединяются параметры в другом файле, см. в соответствующем разделе этой статьи для этого файла.

Свойства для tasks.vs.json

В этом разделе описываются некоторые свойства, которые можно указать в файле tasks.vs.json.

применяется

Вы можете создавать задачи для любого файла или папки, указав их имя в поле applyTo, например "appliesTo": "hello.js" . В качестве значений можно использовать следующие маски файлов:

< /tr>
Маска файла Описание
"*" задача доступна для всех файлов и папок в рабочей области
"*/" задача доступна для всех папок в рабочей области
"*.js" задача доступна для всех файлов с расширением .js в рабочей области
"/*.js" задача доступна для всех файлов с расширением .js в корне рабочей области
"src/*/" задача доступна для всех подпапок папки src
"makefile" задача доступна для всех файлов makefile в рабочей области
"/makefile"< /td> задача доступна только для makefile в корне рабочей области

Макросы для tasks.vs.json

Макрос Описание
$ Указывает любую переменную среды (например, , $, $ и т. д.), установленный для командной строки разработчика. Дополнительные сведения см. в разделах Командная строка разработчика и PowerShell разработчика.
$ Полный путь к папке рабочей области (например, C:\sources\hello )
$ Полный путь к файлу или папке, выбранным для запуска этой задачи (например, C:\sources\hello \src\hello.js)
$ Относительный путь к файлу или папке (например, src\hello.js< /em>)
$ Имя файла без пути или расширения (например, hello)
$ Полный путь к файлу, исключая имя файла (например, C:\sources\hello\src)
$ Расширение выбранного файла (например, .js)

Настроить отладку с помощью launch.vs.json

Чтобы настроить проекты CMake для отладки, см. раздел Настройка сеансов отладки CMake.

Чтобы настроить кодовую базу для отладки, в обозревателе решений выберите пункт меню "Параметры отладки и запуска" по щелчку правой кнопкой мыши или в контекстном меню исполняемого файла.

В диалоговом окне "Выбор отладчика" выберите параметр, а затем нажмите кнопку "Выбрать".

Если файл launch.vs.json еще не существует, он создается.

Далее щелкните правой кнопкой мыши исполняемый файл в обозревателе решений и выберите «Установить как элемент автозагрузки».

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

Когда вы нажимаете F5, отладчик запускается и останавливается на любой точке останова, которую вы, возможно, уже установили. Все знакомые окна отладчика доступны и работают.

Дополнительные сведения о настраиваемых задачах сборки и отладки в проектах открытых папок C++ см. в разделе Поддержка открытых папок для систем сборки C++ в Visual Studio.

Указать аргументы для отладки

Вы можете указать аргументы командной строки для передачи при отладке в файле launch.vs.json. Добавьте аргументы в массив args, как показано в следующем примере:

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

Свойство массива конфигураций в launch.vs.json считывается из двух файловых расположений — корневого каталога базы кода и каталога .vs. В случае конфликта приоритет отдается значению в .vs\launch.vs.json.

Дополнительные файлы настроек

Помимо трех файлов .json, описанных в этом разделе, Visual Studio также считывает параметры из некоторых дополнительных файлов, если они существуют в вашей кодовой базе.

.vscode\settings.json

Visual Studio считывает ограниченные параметры из файла с именем settings.json, если он находится в каталоге с именем .vscode. Эта функциональность предоставляется для баз кода, которые ранее были разработаны в Visual Studio Code. В настоящее время единственным параметром, который считывается из .vscode\settings.json, является files.exclude , который визуально фильтрует файлы в обозревателе решений и в некоторых инструментах поиска.

В вашей кодовой базе может быть любое количество файлов .vscode\settings.json. Параметры, считанные из этого файла, применяются к родительскому каталогу .vscode и всем его подкаталогам.

.gitignore

Файлы

.gitignore используются, чтобы сообщить Git, какие файлы следует игнорировать; то есть, какие файлы и каталоги вы не хотите регистрировать. Файлы .gitignore обычно включаются как часть кодовой базы, чтобы настройки могли быть доступны всем разработчикам кодовой базы. Visual Studio считывает шаблоны в файлах .gitignore для визуальной фильтрации элементов и из некоторых инструментов поиска.

Настройки, считанные из файла .gitignore, применяются к его родительскому каталогу и всем подкаталогам.

В этом руководстве вы настроите Visual Studio Code для использования компилятора и отладчика Microsoft Visual C++ в Windows.

После настройки VS Code вы скомпилируете и отладите простую программу Hello World в VS Code. В этом учебнике не рассказывается подробно о наборе инструментов Microsoft C++ или языке C++. По этим темам в Интернете доступно множество хороших ресурсов.

Если у вас возникнут какие-либо проблемы, не стесняйтесь сообщить о проблеме для этого руководства в репозитории документации VS Code.

Предпосылки

Чтобы успешно завершить это руководство, необходимо сделать следующее:

Установите расширение C/C++ для VS Code. Вы можете установить расширение C/C++, выполнив поиск «c++» в представлении «Расширения» ( ⇧⌘X (Windows, Linux Ctrl+Shift+X )).

Установите набор инструментов компилятора Microsoft Visual C++ (MSVC).

Если у вас установлена ​​последняя версия Visual Studio, откройте установщик Visual Studio из меню "Пуск" Windows и убедитесь, что рабочая нагрузка C++ проверена. Если он не установлен, установите флажок и нажмите кнопку «Изменить» в программе установки.

Вы также можете установить рабочую нагрузку "Разработка рабочего стола на C++" без полной установки интегрированной среды разработки Visual Studio. На странице загрузок Visual Studio прокрутите вниз, пока не увидите Инструменты для Visual Studio 2022 в разделе Все загрузки, и выберите загрузку для инструментов сборки для Visual Studio 2022.

При этом будет запущен установщик Visual Studio, который откроет диалоговое окно с доступными рабочими нагрузками Visual Studio Build Tools. Проверьте рабочую нагрузку "Разработка рабочего стола с помощью C++" и выберите "Установить".

Примечание. Вы можете использовать набор инструментов C++ из Visual Studio Build Tools вместе с Visual Studio Code для компиляции, сборки и проверки любой кодовой базы C++, если у вас также есть действующая лицензия Visual Studio (Community, Pro , или Enterprise), которые вы активно используете для разработки этой кодовой базы C++.

Проверьте установку Microsoft Visual C++

Чтобы использовать MSVC из командной строки или VS Code, необходимо выполнить запуск из командной строки разработчика для Visual Studio. В обычной оболочке, такой как PowerShell, Bash или командная строка Windows, не установлены необходимые переменные среды пути.

Чтобы открыть командную строку разработчика для VS, начните вводить слово «разработчик» в меню «Пуск» Windows, и оно должно появиться в списке предложений. Точное имя зависит от того, какая версия Visual Studio или Visual Studio Build Tools у вас установлена. Выберите элемент, чтобы открыть приглашение.

Вы можете проверить правильность установки компилятора C++, cl.exe , введя 'cl', и вы должны увидеть сообщение об авторских правах с версией и основным описанием использования.

Если командная строка разработчика использует расположение BuildTools в качестве начального каталога (вам не следует помещать туда проекты), перейдите в папку пользователя ( C:\users\\ ), прежде чем начинать создавать новые проекты.< /p>

Примечание. Если по какой-то причине вы не можете запустить VS Code из командной строки разработчика, вы можете найти обходной путь для создания проектов C++ с помощью VS Code в разделе Запуск VS Code вне командной строки разработчика.

Создать Hello World

В командной строке разработчика создайте пустую папку с именем "projects", в которой вы можете хранить все свои проекты VS Code, затем создайте подпапку с именем "helloworld", перейдите в нее и откройте VS Code ( code ) в этой папке. ( . ), введя следующие команды:

Код . Команда открывает VS Code в текущей рабочей папке, которая становится вашей «рабочей областью». По мере прохождения руководства вы увидите три файла, созданных в папке .vscode в рабочей области:

  • tasks.json (инструкции по сборке)
  • launch.json (настройки отладчика)
  • c_cpp_properties.json (путь к компилятору и настройки IntelliSense)

Добавить файл исходного кода

В строке заголовка проводника нажмите кнопку "Новый файл" и назовите файл helloworld.cpp .

Добавить исходный код Hello World

Теперь вставьте этот исходный код:

Теперь нажмите ⌘S (Windows, Linux Ctrl+S ), чтобы сохранить файл. Обратите внимание, как только что добавленный файл отображается в представлении Проводника ( ⇧⌘E (Windows, Linux Ctrl+Shift+E) ) на боковой панели VS Code:

Вы также можете включить функцию "Автосохранение" для автоматического сохранения изменений в файле, установив флажок "Автосохранение" в главном меню "Файл".

Панель действий в крайнем левом углу позволяет открывать различные представления, например «Поиск», «Управление версиями» и «Выполнить». Вы познакомитесь с представлением «Выполнить» позже в этом руководстве. Дополнительные сведения о других представлениях см. в документации по пользовательскому интерфейсу VS Code.

Примечание. Когда вы сохраняете или открываете файл C++, вы можете увидеть уведомление от расширения C/C++ о доступности версии Insiders, которая позволяет протестировать новые функции и исправления. Вы можете проигнорировать это уведомление, выбрав X (Удалить уведомление).

Исследуйте IntelliSense

В новом файле helloworld.cpp наведите указатель мыши на вектор или строку, чтобы увидеть информацию о типе. После объявления переменной msg начните вводить msg. как при вызове функции-члена.Вы должны немедленно увидеть список завершения, который показывает все функции-члены, и окно, которое показывает информацию о типе для объекта msg:

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

Сборка helloworld.cpp

Далее вы создадите файл tasks.json, чтобы указать VS Code, как собирать (компилировать) программу. Эта задача вызовет компилятор Microsoft C++ для создания исполняемого файла на основе исходного кода.

В главном меню выберите «Терминал» > «Настроить задачу сборки по умолчанию». В раскрывающемся списке будет отображаться раскрывающийся список задач со списком различных предопределенных задач сборки для компиляторов C++. Выберите cl.exe build active file, который создаст файл, отображаемый (активный) в данный момент в редакторе.

Это создаст файл tasks.json в папке .vscode и откроет его в редакторе.

Ваш новый файл tasks.json должен выглядеть примерно так, как показано ниже:

Настройка команды определяет программу для запуска; в данном случае это «cl.exe». Массив args указывает аргументы командной строки, которые будут переданы в cl.exe. Эти аргументы должны быть указаны в порядке, ожидаемом компилятором. Эта задача сообщает компилятору C++ взять активный файл ( $ ), скомпилировать его и создать исполняемый файл ( /Fe: переключатель) в текущем каталоге ( $ ) с тем же именем, что и у активного файла, но с расширением .exe. ( $.exe ), что в нашем примере приводит к helloworld.exe.

Примечание. Подробнее о переменных tasks.json можно узнать в справочнике по переменным.

Значение ярлыка — это то, что вы увидите в списке задач; вы можете назвать это как хотите.

Значение ProblemMatcher выбирает анализатор выходных данных, который будет использоваться для поиска ошибок и предупреждений в выходных данных компилятора. Для cl.exe вы получите наилучшие результаты, если будете использовать средство сопоставления задач $msCompile.

Значение isDefault: true в групповом объекте указывает, что эта задача будет запущена при нажатии ⇧⌘B (Windows, Linux Ctrl+Shift+B ). Это свойство предназначено только для удобства; если вы установите для него значение false, вы все равно сможете запустить его из меню терминала с помощью Tasks: Run Build Task.

Запуск сборки

Вернитесь к файлу helloworld.cpp . Ваша задача создает активный файл, и вы хотите построить helloworld.cpp .

Чтобы запустить задачу сборки, определенную в tasks.json , нажмите ⇧⌘B (Windows, Linux Ctrl+Shift+B ) или в главном меню терминала выберите Задачи: Запустить задачу сборки.

При запуске задачи под редактором исходного кода должна появиться панель встроенного терминала. После завершения задачи терминал показывает выходные данные компилятора, указывающие на то, была ли сборка успешной или неудачной. Для успешной сборки C++ вывод выглядит примерно так:

Если сборка завершается сбоем из-за того, что не найден cl.exe или отсутствует путь включения, убедитесь, что вы запустили VS Code из командной строки разработчика для Visual Studio.

Создайте новый терминал с помощью кнопки +, и у вас будет новый терминал (работающий с PowerShell) с папкой helloworld в качестве рабочего каталога. Запустите ls, и теперь вы должны увидеть исполняемый файл helloworld.exe вместе с различными промежуточными выходными файлами C++ и файлами отладки ( helloworld.obj , helloworld.pdb ).

Вы можете запустить helloworld в терминале, набрав .\helloworld.exe .

Примечание. Возможно, сначала вам придется несколько раз нажать Enter, чтобы увидеть приглашение PowerShell в терминале. Эта проблема должна быть исправлена ​​в будущем выпуске Windows.

Изменение tasks.json

Вы можете изменить файл tasks.json для создания нескольких файлов C++, используя такой аргумент, как "$\\*.cpp" вместо $ . Это создаст все файлы .cpp в вашей текущей папке. Вы также можете изменить имя выходного файла, заменив "$\\$.exe" жестко заданным именем файла (например, "$\\myProgram.exe" ).

Отладка файла helloworld.cpp

Далее вы создадите файл launch.json, чтобы настроить VS Code для запуска отладчика Microsoft C++ при нажатии клавиши F5 для отладки программы. В главном меню выберите «Выполнить» > «Добавить конфигурацию». а затем выберите C++ (Windows).

После этого вы увидите раскрывающийся список для различных предопределенных конфигураций отладки. Выберите cl.exe для сборки и отладки активного файла.

VS Code создает файл launch.json, открывает его в редакторе, строит и запускает "helloworld".

Настройка программы определяет программу, которую вы хотите отлаживать. Здесь указывается активная папка с файлами $ и активное имя файла с расширением .exe $.exe , которое, если активным файлом является helloworld.cpp , будет helloworld.exe .

По умолчанию расширение C++ не добавляет никаких точек останова в исходный код, а для параметра stopAtEntry установлено значение false . Измените значение stopAtEntry на true, чтобы отладчик останавливался на основном методе при запуске отладки.

Начать сеанс отладки

  1. Вернитесь к файлу helloworld.cpp, чтобы он стал активным.
  2. Нажмите F5 или в главном меню выберите «Выполнить» > «Начать отладку». Прежде чем вы приступите к просмотру исходного кода, обратите внимание на несколько изменений в пользовательском интерфейсе:

Интегрированный терминал отображается в нижней части редактора исходного кода. На вкладке «Вывод отладки» вы видите вывод, указывающий на то, что отладчик запущен и работает.

Редактор выделяет первый оператор в основном методе. Это точка останова, которую расширение C++ автоматически устанавливает для вас:

В представлении «Выполнение» слева отображается отладочная информация. Вы увидите пример позже в этом руководстве.

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

Пошаговое выполнение кода

Теперь вы готовы приступить к выполнению кода.

Нажимайте значок Step over на панели управления отладкой, пока не будет выделен оператор for (const string& word : msg).

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

Нажмите Step over еще раз, чтобы перейти к следующему оператору в этой программе (пропустив весь внутренний код, который выполняется для инициализации цикла). Теперь в окне «Переменные» отображается информация о переменных цикла.

Снова нажмите Step, чтобы выполнить оператор cout. Примечание. Начиная с версии расширения за март 2019 г. выходные данные не отображаются до завершения цикла.

Если хотите, вы можете продолжать нажимать Step over до тех пор, пока все слова в векторе не будут напечатаны на консоли. Но если вам интересно, попробуйте нажать кнопку Step Into, чтобы просмотреть исходный код в стандартной библиотеке C++!

Чтобы вернуться к собственному коду, один из способов – продолжать нажимать кнопку "Перейти". Другой способ — установить точку останова в вашем коде, переключившись на вкладку helloworld.cpp в редакторе кода, поместив точку вставки где-нибудь в операторе cout внутри цикла и нажав F9. Красная точка появляется в поле слева, указывая на то, что в этой строке установлена ​​точка останова.

Затем нажмите F5, чтобы начать выполнение с текущей строки в заголовке стандартной библиотеки. Выполнение прервется на cout . Если хотите, вы можете снова нажать F9, чтобы отключить точку останова.

Настроить часы

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

Поместите точку вставки внутри цикла. В окне Watch выберите знак «плюс» и в текстовом поле введите слово, которое является именем переменной цикла. Теперь просмотрите окно Watch, когда будете проходить цикл.

Добавьте еще одно наблюдение, добавив этот оператор перед циклом: int i = 0; . Затем внутри цикла добавьте следующий оператор: ++i; . Теперь добавьте часы для i, как вы делали это на предыдущем шаге.

Чтобы быстро просмотреть значение любой переменной, пока выполнение приостановлено в точке останова, вы можете навести на нее указатель мыши.

Конфигурации C/C++

Если вам нужен больший контроль над расширением C/C++, вы можете создать файл c_cpp_properties.json, который позволит вам изменять такие параметры, как путь к компилятору, включаемые пути, стандарт C++ (по умолчанию C++ 17) и многое другое.

Вы можете просмотреть пользовательский интерфейс конфигурации C/C++, выполнив команду C/C++: Edit Configurations (UI) из палитры команд ( ⇧⌘P (Windows, Linux Ctrl+Shift+P )).

При этом открывается страница конфигураций C/C++. Когда вы вносите здесь изменения, VS Code записывает их в файл с именем c_cpp_properties.json в папке .vscode.

Visual Studio Code помещает эти параметры в файл .vscode\c_cpp_properties.json . Если вы откроете этот файл напрямую, он должен выглядеть примерно так:

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

Путь к компилятору

ПараметрcompilePath является важным параметром в вашей конфигурации. Расширение использует его для определения пути к файлам заголовков стандартной библиотеки C++. Когда расширение знает, где найти эти файлы, оно может предоставлять полезные функции, такие как интеллектуальное завершение и навигация «Перейти к определению».

Расширение C/C++ пытается указать вcompilePath местоположение компилятора по умолчанию на основе того, что оно находит в вашей системе. Расширение выглядит в нескольких общих местах расположения компилятора.

Порядок поиска по пути компилятора:

  • Сначала проверьте наличие компилятора Microsoft Visual C++Ope
  • Затем найдите g++ в подсистеме Windows для Linux (WSL)
  • Затем g++ для Mingw-w64.

Если у вас установлены g++ или WSL, вам может потребоваться изменить значениеcompilePath, чтобы оно соответствовало предпочитаемому компилятору для вашего проекта. Для Microsoft C++ путь должен выглядеть примерно так, в зависимости от установленной версии: "C:/Program Files (x86)/Microsoft Visual Studio/2017/BuildTools/VC/Tools/MSVC/14.16.27023/bin /Hostx64/x64/cl.exe".

Повторное использование конфигурации C++

VS Code теперь настроен на использование компилятора Microsoft C++. Конфигурация применяется к текущей рабочей области. Чтобы повторно использовать конфигурацию, просто скопируйте файлы JSON в папку .vscode в новой папке проекта (рабочей области) и при необходимости измените имена исходных файлов и исполняемого файла.

Запуск VS Code вне командной строки разработчика

В некоторых случаях невозможно запустить VS Code из командной строки разработчика для Visual Studio (например, в сценариях удаленной разработки через SSH). В этом случае вы можете автоматизировать инициализацию командной строки разработчика для Visual Studio во время сборки, используя следующую конфигурацию tasks.json:

Примечание. Путь к VsDevCmd.bat может отличаться в зависимости от версии Visual Studio или пути установки. Вы можете найти путь к VsDevCmd.bat, открыв командную строку и запустив каталог "\VsDevCmd*" /s .

Устранение неполадок

Термин «cl.exe» не распознается

Если вы видите сообщение об ошибке "Термин "cl.exe" не распознается как имя командлета, функции, файла сценария или исполняемой программы", обычно это означает, что вы запускаете VS Code вне команды разработчика. Подсказка для Visual Studio и VS Code не знает путь к компилятору cl.exe.

VS Code необходимо либо запускать из командной строки разработчика для Visual Studio, либо задачу необходимо настроить для запуска вне командной строки разработчика.

, с удовольствием приму ваши предложения по темам или улучшениям /Крис

В этой статье мы рассмотрим:

каким командам нас научили и на что обратить внимание, например, на ASP, Docker, Cloud

Чтобы использовать Azure, вам потребуется бесплатная учетная запись Azure

Это простое консольное приложение Hello World

Здесь объясняется, как докеризировать ваше приложение, как создать файл Dockerfile и т. д.

Существует несколько вариантов модульного тестирования

После его установки у вас должен быть доступ к инструменту командной строки, который вы можете вызвать в терминале под названием dotnet . Вы можете легко увидеть, какие команды доступны, набрав:

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

Хорошо, теперь мы настроили и готовый код 😃

Мы предпримем следующие шаги:

  1. Создайте каталог для нашего решения
  2. Вызвать команду для создания решения

Сначала создадим каталог:

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

Далее создадим решение. Мы делаем это с помощью следующей команды:

sln — это сокращение от "solution", при этом будет создано новое решение. Поскольку мы находимся в каталоге приложения, создается файл app.sln.

Чтобы создать библиотеку, нам нужно ввести в терминал следующее (мы все еще находимся в каталоге приложения):

Выше мы видим, что нашей общей командой является dotnet new , за которой следует тип, в данном случае classlib , затем мы используем флаг -o и последний аргумент — это имя проекта.

Давайте посмотрим, что у нас получилось:

Мы видим, что библиотека каталогов создана. Мы также видим, что у нас есть файл Class1.cs, файл проекта library.csproj и директория obj. На этом этапе давайте переключимся на VS Code и посмотрим на наши файлы. Глядя на Class1.cs, это выглядит так:

Давайте закончим этот раздел, добавив в решение:

Это добавит следующую запись в app.sln :

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

Хорошо, нам нужно добавить код в наш проект библиотеки. Мы сделаем следующее:

  1. Загрузить пакет NuGet из репозитория NuGet
  2. Ссылка на наш пакет NuGet в коде нашей библиотеки
  3. Создайте наш код

Это большой (160 000 библиотек + библиотеки) репозиторий, в котором находятся все библиотеки NuGet. Все, что здесь живет, может быть загружено простой командой. Для этой части мы возьмем специальную библиотеку под названием Newtonsoft.Json. Это позволит нам анализировать JSON вперед и назад. Чтобы сделать эту библиотеку частью нашего решения, мы можем ввести:

Сказанное выше означает, что мы добавляем пакет Newtonsoft.Json в библиотеку проекта. Команду следует читать так:

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

Это захватит пакеты, указанные как ссылки на пакеты в файле csproj ваших проектов.

В проекте библиотеки измените файл Class1.cs на Thing.cs и добавьте в него следующий код:

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

Как показано на изображении выше, мы получаем library.dll

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

Это создаст тестовый проект типа xunit с именем test-library .

Давайте также добавим наш проект в файл решения:

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

Когда мы создали нашу тестовую библиотеку, мы также создали файл с именем UnitTest1.cs. Давайте посмотрим на этот файл:

Мы используем декоратор [Fact], чтобы указать, что это тестовый метод, который необходимо оценить и запустить. Давайте добавим код рядом с UnitTest.cs:

Теперь мы готовы запустить наш тест и проверить результат.

Чтобы запустить тесты, введите:

Мы используем команду dotnet test, и последний аргумент — где найти файл проекта для тестового проекта. Итак, что мы получаем?

На изображении выше видно, что наш тестовый запуск не удался. Он четко указывал [Fail]. Давайте посмотрим на ПОЧЕМУ. Ожидаемый результат будет НЕ 42. Хм, давайте проверим реализацию в Thing.cs в нашем библиотечном проекте:

Мы просто берем 2 входных аргумента и суммируем их. Как насчет теста в UnitTest1.cs?

19 + 23 НЕ должно быть равно 42. Подождите минутку. Он должен быть равным. Давайте изменим это:

и повторим тест:

Давайте проверим результаты и.

На этот раз тесты прошли успешно.

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

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

Это дает нам работающий проект с файлом Program.cs, который служит точкой входа. Технически точкой входа является метод Main() :

Давайте добавим этот проект в файл решения, например:

Следующая задача — начать использовать наш проект библиотеки и сделать его частью нашего проекта консольного приложения. Итак, мы добавляем зависимость следующим образом:

Прочитайте вышеприведенное как:

Далее нам нужно изменить код нашего файла Program.cs на следующий:

Далее запустим приложение

Мы получили работающее приложение, используя код из проекта библиотеки.

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

Теперь VS Code попросит вас добавить необходимый ресурс для отладки, если вы откроете решение, в котором он отсутствует. Так откуда мне знать, чего не хватает? Ну, у вас должен быть каталог .vscode, который выглядит так:

Ну, вы можете попробовать выбрать в меню Отладка/Начать отладку, и вы заметите, что запущена тестовая библиотека, если посмотрите в конец окна отладки

Теперь вы, вероятно, захотите изменить это, чтобы фактически запускать проект console-app при отладке. Для этого нам нужно войти в файл launch.json в каталоге .vscode. Найдите запись, выглядящую примерно так:

Нам нужно изменить свойство "program", чтобы оно указывало на наше консольное приложение, а также "cwd".

Теперь он должен выглядеть так, как показано ниже в файле launch.json

Затем выберите пункт меню Отладка/Начать отладку, и мы должны увидеть следующее

Вот и все, мальчики и девочки, работаем над отладкой 😃

Итак, опыт, первое, что произошло, это то, что я только что заметил, что когда я изменил код в Program.cs, моя точка останова не срабатывала должным образом. Этому было объяснение. Глядя на нашу запись в файле launch.json, мы видим, что есть свойство «preLaunchTask»: «build», которое указывает задачу, которая должна быть запущена до нашей отладки. Эта задача находится в tasks.json. Перейдя к этому файлу, мы заметили, что он выглядит так:

ДА, вы правы, мы создали не тот проект перед повторным запуском отладки. Способ исправить это состоял в том, чтобы запустить

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

Если вы снова отлаживаете, все работает. Теперь вы немного больше знаете, как все работает в VS Code.

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

Что ж, есть плагин, который это исправляет. Он называется vscode-solution-explorer. Если вы установите его, ваш проект внезапно станет выглядеть так:

и щелкнув проект правой кнопкой мыши, вы получите следующее меню:

Моя спонтанная реакция 😃

Это не официальное расширение Microsoft, но оно очень приятное и его стоит попробовать, если вы, как и я, любите команды терминала, но иногда просто хотите пользовательский интерфейс.

Наконец, мы также показали подключаемый модуль, который предлагает альтернативный подход ко всем нашим командам терминала. Конечно, под капотом он запускает наши команды терминала, поэтому, безусловно, полезно изучить способы CLI. 😃

Интеллектуальное завершение кода C/C++

C/C++ Smart Code Linter для быстрого профессионального развития

Менеджер библиотек для сотен популярных библиотек

Рабочий процесс для нескольких проектов с несколькими панелями

Поддержка тем с темными и светлыми цветами

Монитор последовательного порта

Встроенный терминал с PlatformIO Core (CLI) и инструментом CLI ( pio , platformio )

Установка¶

Обратите внимание, что вам не нужно отдельно устанавливать PlatformIO Core (CLI), если вы собираетесь использовать VSCode. PlatformIO Core (CLI) встроен в PlatformIO IDE, и вы сможете использовать его в терминале PlatformIO IDE.

Загрузите и установите официальный код Microsoft Visual Studio. PlatformIO IDE построена поверх него

Открыть диспетчер пакетов VSCode

Поиск официального расширения platformio ide

Установите IDE PlatformIO.

Обратите внимание, что вам необходимо установить Git-клиент, если вы собираетесь использовать Git для установки вышестоящих платформ разработки, клонирования внешних проектов, установки зависимостей библиотек из репозитория и т. д.

Быстрый старт¶

Это руководство знакомит вас с основами рабочего процесса PlatformIO IDE и показывает процесс создания простого примера «Blink». После окончания у вас будет общее представление о том, как работать с проектами в IDE.

Настройка проекта¶

Нажмите кнопку «PlatformIO Home» на нижней панели инструментов PlatformIO

Нажмите «Новый проект», выберите доску и создайте новый проект PlatformIO

Откройте файл main.cpp из папки src и замените его содержимое следующим:

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

Создайте свой проект с помощью горячей клавиши Ctrl+Alt+B (см. все сочетания клавиш в разделе «Руководство пользователя» ниже) или с помощью кнопки «Создать» на панели инструментов PlatformIO

Дальше для чтения:

Учебники и примеры (пошаговые руководства с отладкой и модульным тестированием)

Подробнее о панели инструментов PlatformIO и других командах (Upload, Clean, Serial Monitor) читайте ниже.

Удачного программирования с PlatformIO!

Панель инструментов PlatformIO¶

Панель инструментов PlatformIO IDE находится в строке состояния VSCode (в левом углу) и содержит кнопки быстрого доступа к популярным командам. Каждая кнопка содержит подсказку (задержка мыши на ней).

Переключатель среды проекта (если доступно более одной среды). См. раздел [env] файла «platformio.ini» (файл конфигурации проекта).

Ядро платформы ввода/вывода (CLI)¶

Есть 2 способа доступа к PlatformIO Core (CLI):

Левая панель действий > PlatformIO (значок муравья) > Быстрый доступ > Разное > CLI PlatformIO Core

Задачи проекта¶

Проводник задач¶

PlatformIO предоставляет доступ к «Задаче проекта», где вы можете контролировать процесс сборки сред, объявленных в «platformio.ini» (файл конфигурации проекта). Обозреватель задач проекта находится на панели действий VSCode под фирменным значком PlatformIO. Вы также можете получить к нему доступ через «VSCode Menu > Open View… > PlatformIO».

Обратите внимание, что вы можете перетащить/переместить «Задачу проекта» в другое представление в VSCode, например «Проводник».

Выполнение задач¶

PlatformIO IDE предоставляет встроенные задачи через меню «Терминал» > «Выполнить задачу». (сборка, загрузка, очистка, мониторинг и т. д.) и настраиваемые задачи для среды «platformio.ini» (файл конфигурации проекта) ( [env:***] ). По умолчанию для презентации используются панели терминалов, одна панель предназначена для каждой уникальной задачи.

Среда PlatformIO IDE предоставляет собственный инструмент сопоставления задач с именем $platformio . Вы можете использовать его позже, если решите изменить настройки базовой задачи.

Вы можете заменить существующие задачи собственными параметрами презентации. Например, давайте настроим PlatformIO Task Runner для использования НОВОЙ панели терминала для каждой команды «Сборка»:

Пункт меню «Терминал» > «Выполнить задачу». открывает список задач VSCode для PlatformIO. В строке PlatformIO: Build нажмите значок шестеренки в крайней правой части списка. Это создает или открывает файл .vscode/tasks.json с некоторым кодом шаблона.

Замените шаблон в tasks.json этим кодом

Пользовательские задачи¶

Пользовательские задачи можно добавить в файл tasks.json, расположенный в папке .vscode в корне проекта. Пожалуйста, ознакомьтесь с официальной документацией Задачи в VSCode.

В этом простом примере демонстрируется пользовательская задача монитора, которая локально воспроизводит входные данные. Существует множество других команд, пожалуйста, прочитайте больше о PlatformIO Core (CLI) и его командах (Руководство по CLI).

Если исполняемый файл platformio не находится в вашей системной среде «PATH», вы можете указать полный путь к двоичной папке, используя поле параметров для задачи. Например, если бинарный файл platformio находится в домашней папке «~/.platformio/penv/bin»:

Многопроектные рабочие пространства¶

Вы можете работать с несколькими папками проекта в Visual Studio Code с несколькими корневыми рабочими пространствами. Это может быть очень полезно, когда вы одновременно работаете над несколькими связанными проектами. Подробнее читайте в документации Multi-root Workspaces.

Читайте также: