Powershell Core 模块的适当调试工作流程是什么?

What is an appropriate debugging workflow for Powershell Core modules?

我的公司有一个用 C# 编写的 .NET Powershell 模块,允许高级用户在我们的产品中自动执行任务。目前它以使用 .NET 4.6.1 的 Powershell 5 为目标。我们希望让使用其他操作系统的客户也能使用它,并且由于它没有 OS 特定代码,因此移植它很简单。

但是,我找不到有关应遵循的调试工作流程的文档。在标准的 .NET Powershell 中,这非常简单并且需要一次性设置过程:

但是,这不适用于 Powershell Core。由于该项目依赖于 NuGet 包,因此模块注册失败并出现依赖项错误。我能够找出另一个工作流程,但它有点迟钝:

这行得通,我已经用这种方法调试了一些问题,但这不是最令人愉快或最有效的方法。我相信一定有更好的方法,只是没有很好的记录。

我最初想出了一种基于脚本的方法,您可以在 post 的历史中看到它,但当时我不知道的是 CopyLocalLockFileAssemblies 属性 这使得调试目录看起来像以前在 .NET Framework 上工作时的样子。您只需要将此添加到 .csproj 中的 <PropertyGroup>:

<CopyLocalLockFileAssemblies>true</CopyLocalLockFileAssemblies>

然后,调试设置与加载到第三方应用程序中的任何其他 .NET 模块一样:

  1. 右键单击您的 Powershell 模块项目并单击属性
  2. Select调试
  3. 将启动设置为可执行文件
  4. 可执行文件:C:\Program Files\PowerShell\pwsh.exe
  5. 参数:-NoExit -Command "Import-Module C:\dev\my-module\bin\Debug\netstandard2.0\my-module.dll"
  6. 将您的模块设置为启动项目
  7. 按 F5 开始调试。