我正在Visual Studio 2017中用C#开发Powershell模块。
对于运行和调试方面的开发经验如此糟糕,我感到有些惊讶,因此我在这里碰碰运气。

现在它对我的工作方式如下:

  • 实现模块
  • 编译
  • 启动新的Powershell窗口
  • 导航到bin / debug文件夹
  • 导入已编译的DLL(import-module)
  • 运行命令
  • 关闭Powershell窗口(否则,由于DLL文件被锁定,我无法重建项目)
  • 修复错误,然后返回步骤2

  • 如果需要调试代码,可以使用VS2017附件来处理和调试代码(在第5步之后)。

    就DX而言,这不是理想的选择,我希望有更好的东西,像这样:
  • 实现模块
  • 编译
  • 按F5(start)
  • Powershell窗口打开,其中加载了模块
  • 运行命令
  • 断点命中暂停程序,就像我们以前使用的

  • 我该如何实现?

    最佳答案

    我设法在@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的带有Console App的项目,并将该其他项目用作具有上述设置的启动项目。现在,我的工作流程正好反射(reflect)了您的第二个顺序(1-6)。卸载dll是没有问题的,因为停止调试确实会结束该过程。

    关于c# - 在Visual Studio 2017中运行和调试Powershell模块,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50397320/

    10-11 01:03
    查看更多