Каков подходящий рабочий процесс отладки для модулей Powershell Core?

В моей компании есть модуль .NET Powershell, написанный на C #, чтобы позволить опытным пользователям автоматизировать задачи в нашем продукте. В настоящее время он нацелен на Powershell 5 с использованием .NET 4.6.1. Мы хотели бы позволить клиентам, использующим другие операционные системы, также использовать его, и, поскольку он не имеет кода, специфичного для ОС, переносить его было несложно.

Однако я не могу найти документацию по рабочему процессу отладки, которому следует следовать. В стандартной .NET Powershell это было довольно просто и требовало одноразовой процедуры настройки:

  • Настройте исполняемый файл отладки как путь к Powershell
  • Задайте в качестве аргументов отладки короткий сценарий, который загружает модуль и, при необходимости, выполняет тестируемую функцию.
  • Нажмите F5

Однако это не работает для Powershell Core. Поскольку проект зависит от пакетов NuGet, регистрация модуля завершается ошибкой зависимости. Мне удалось придумать другой рабочий процесс, но он немного более тупой:

  • Перейдите в каталог проекта
  • Выполнить dotnet publish -f netstandard2.0 -c debug
  • Выполнить Import-Module ./bin/Debug/netstandard2.0/publish/MyModule.dll
  • Выполните $pid, чтобы найти PID.
  • Присоединение к PID через Присоединение к процессу в Visual Studio

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


person Steve Rukuts    schedule 03.09.2018    source источник


Ответы (1)


Изначально я придумал подход, основанный на сценариях, который вы можете увидеть в истории этого поста, но в то время я не знал, что это свойство CopyLocalLockFileAssemblies, которое заставляет каталог отладки выглядеть так, как он раньше выглядел при работе с .NET Framework. . Вам просто нужно добавить это в свой .csproj в <PropertyGroup>:

<CopyLocalLockFileAssemblies>true</CopyLocalLockFileAssemblies>

Затем настройка отладки такая же, как и для любого другого модуля .NET, загруженного в стороннее приложение:

  1. Щелкните правой кнопкой мыши проект модуля Powershell и выберите свойства.
  2. Выберите Debug
  3. Установите для запуска значение "Исполняемый"
  4. Исполняемый файл: C:\Program Files\PowerShell\6\pwsh.exe
  5. Аргументы: -NoExit -Command "Import-Module C:\dev\my-module\bin\Debug\netstandard2.0\my-module.dll"
  6. Установите свой модуль в качестве запускаемого проекта
  7. Нажмите F5, чтобы начать отладку.
person Steve Rukuts    schedule 16.09.2018