Запуск и отладка модулей Powershell в Visual Studio 2017
Я разрабатываю модуль Powershell в C#, в Visual Studio 2017. Я немного удивлен тем, что опыт разработки настолько плох с точки зрения запуска и отладки, что я пытаюсь здесь испытать удачу.
У меня сейчас работает так:
- Реализовать модуль
- компилировать
- Начать новое окно Powershell
- Перейдите в папку bin/debug
- импортировать скомпилированную DLL (
import-module
) - Запустите команды
- Закройте окно Powershell (иначе я не смогу пересобрать проект, так как файл DLL заблокирован)
- Исправьте ошибки и вернитесь к шагу № 2
В случае, если мне нужно отладить код, я использую присоединение VS2017 для обработки и отладки кода (после шага № 5).
Это не идеально с точки зрения DX, и я хотел бы иметь что-то лучшее, как можно ближе к этому:
- Реализовать модуль
- компилировать
- Нажмите F5 (
start
) - Окно Powershell открывается с загруженным модулем
- Запустите команды
- Точки останова нажимают на паузу в программе, как мы привыкли
Как мне этого добиться?
1 ответ
Мне удалось получить эту работу с помощью вышеупомянутого комментария от @Glenn:
Начните отладку с помощью внешней программы
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
и строка параметров
-NoExit -command "Import-Module '<path to your module>'; "
Теперь вы можете начать с F5 -> получить окно powershell с уже загруженным модулем, и отладчик подключен к этому процессу.
Но вы должны быть осторожны, если ваш двоичный модуль написан для целевой платформы.NET Standard. В этом случае кажется, что отладчик (VS2017 15.8.9) не может определить, какие модули времени выполнения загрузить. Таким образом, в этом сценарии нет никаких точек останова! Мой быстрый обходной путь - добавить другой проект с консольным приложением для.NET Framework 4.xy и использовать этот другой проект в качестве начального проекта с указанными выше настройками. Теперь мой рабочий процесс точно отражает вашу вторую последовательность (1-6). Выгрузка DLL не является проблемой, потому что остановка отладки завершает процесс.