Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этом руководстве показано, как интерактивно отлаживать исходный код C# для скомпилированного модуля PowerShell с помощью Visual Studio Code (VS Code) и расширения C#.
Предполагается, что уже имеются определённые знания об отладчике Visual Studio Code.
Общий обзор отладчика VS Code см. в разделе об отладке в Visual Studio Code.
Примеры отладки файлов скриптов и модулей PowerShell см. в разделе «Использование Visual Studio Code для удаленного редактирования и отладки», а также в разделе.
В этом руководстве предполагается, что вы прочитали и следовали инструкциям из руководства по созданию переносимых модулей.
Создание задачи сборки
Создайте проект автоматически перед запуском сеанса отладки. Перестроение гарантирует отладку вашей последней версии кода.
Настройка задачи сборки:
В палитре команд выполните команду Настроить задачу сборки по умолчанию.
В диалоговом окне Выберите задачу для настройки, выберите Создать файл tasks.json из шаблона.
В диалоговом окне Выбор шаблона задачи выберите .NET Core.
Новый файл tasks.json создается, если он еще не существует.
Чтобы протестировать задачу сборки, выполните приведенные далее действия.
В палитры командвыполните команду задачи сборки.
В диалоговом окне Выберите задачу сборки для запуска выберите сборку.
Сведения о заблокированных файлах DLL
По умолчанию успешная сборка не отображает выходные данные в области терминала. Если вы видите выходные данные, содержащие текст Project file doesn't exist, вам следует отредактировать файл tasks.json. Включите явный путь к проекту C#, выраженному как "${workspaceFolder}/myModule". В этом примере myModule — это имя папки проекта. Эта запись должна быть расположена после элемента build в списке args следующим образом:
{
"label": "build",
"command": "dotnet",
"type": "shell",
"args": [
"build",
"${workspaceFolder}/myModule",
// Ask dotnet build to generate full paths for file names.
"/property:GenerateFullPaths=true",
// Do not generate summary otherwise it leads to duplicate errors in Problems panel
"/consoleloggerparameters:NoSummary",
],
"group": "build",
"presentation": {
"reveal": "silent"
},
"problemMatcher": "$msCompile"
}
При отладке библиотека DLL модуля импортируется в сеанс PowerShell в терминале VS Code. Библиотека DLL заблокирована. Следующее сообщение отображается при запуске задачи сборки без закрытия сеанса терминала:
Could not copy "obj\Debug\netstandard2.0\myModule.dll" to "bin\Debug\netstandard2.0\myModule.dll"`.
Перед перестройкой сеансы терминала должны быть закрыты.
Настройка отладчика
Чтобы выполнить отладку командлета PowerShell, необходимо настроить настраиваемую конфигурацию запуска. Эта конфигурация используется для:
- Создание исходного кода
- Запуск PowerShell с загруженным модулем
- Оставьте PowerShell открытым в области терминала
При вызове командлета в сеансе терминала отладчик останавливается на любой точке останова, заданной в вашем исходном коде.
Настройка launch.json для PowerShell
Установка расширения C# для Visual Studio Code
В области отладки добавьте конфигурацию отладки
В диалоговом окне
Select environmentвыберите.NET CoreФайл
launch.jsonоткрыт в редакторе. Когда ваш курсор находится внутри массиваconfigurations, вы видите средство выбораconfiguration. Если этот список не отображается, выберите Добавить конфигурацию.Чтобы создать конфигурацию отладки по умолчанию, выберите Запустить консольное приложение .NET Core:
Измените поля
name,program,argsиconsoleследующим образом:{ "name": "PowerShell cmdlets: pwsh", "type": "coreclr", "request": "launch", "preLaunchTask": "build", "program": "pwsh", "args": [ "-NoExit", "-NoProfile", "-Command", "Import-Module ${workspaceFolder}/myModule/bin/Debug/netstandard2.0/myModule.dll", ], "cwd": "${workspaceFolder}", "stopAtEntry": false, "console": "integratedTerminal" }
Поле program используется для запуска pwsh, чтобы выполнить отлаживаемый командлет. Аргумент -NoExit предотвращает выход сеанса PowerShell сразу после импорта модуля.
Путь в аргументе Import-Module — это путь вывода сборки по умолчанию, следуя руководству по написанию переносимых модулей. Если вы создали манифест модуля (.psd1 файл), следует использовать путь к нему. Разделитель путей / работает в Windows, Linux и macOS. Для отладки команд PowerShell необходимо использовать интегрированный терминал.
Заметка
Если отладчик не останавливается на точках останова, просмотрите строку в консоли отладки Visual Studio Code:
Loaded '/path/to/myModule.dll'. Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled.
Если вы видите это, добавьте "justMyCode": false в конфигурацию запуска (на том же уровне, что и "console": "integratedTerminal".
Настройка launch.json для Windows PowerShell
Конфигурация этого запуска подходит для тестирования ваших командлетов в Windows PowerShell (powershell.exe).
Создайте вторую конфигурацию запуска со следующими изменениями:
nameдолжно бытьPowerShell cmdlets: powershelltypeдолжно бытьclrprogramдолжно бытьpowershellЭто должно выглядеть следующим образом:
{ "name": "PowerShell cmdlets: powershell", "type": "clr", "request": "launch", "preLaunchTask": "build", "program": "powershell", "args": [ "-NoExit", "-NoProfile", "-Command", "Import-Module ${workspaceFolder}/myModule/bin/Debug/netstandard2.0/myModule.dll", ], "cwd": "${workspaceFolder}", "stopAtEntry": false, "console": "integratedTerminal" }
Запуск сеанса отладки
Теперь все готово к отладке.
Поместите точку останова в исходный код для командлета, который требуется выполнить отладку:
Убедитесь, что соответствующие командлеты PowerShell конфигурации выбраны в раскрывающемся меню конфигурации в представлении отладки:
Нажмите F5 или нажмите кнопку Начать отладку
Перейдите в область терминала и вызовите командлет:
Выполнение останавливается в точке останова:
Вы можете выполнить шаги по исходному коду, проверить переменные и проверить стек вызовов.
Чтобы завершить отладку, нажмите кнопку Остановить на панели инструментов отладки или нажмите клавиши SHIFT+F5. Оболочка, используемая для отладки, завершает работу и освобождает блокировку скомпилированного DLL-файла.
PowerShell