【发布时间】:2018-10-28 01:39:00
【问题描述】:
我正在 Visual Studio 2017 中使用 C# 开发 Powershell 模块。 开发体验在运行和调试方面如此糟糕,我有点惊讶,所以我在这里碰碰运气。
它现在对我的工作方式如下:
- 实现模块
- 编译
- 启动一个新的 Powershell 窗口
- 导航到 bin/debug 文件夹
- 导入编译好的DLL (
import-module) - 运行命令
- 关闭 Powershell 窗口(否则我无法重建项目,因为 DLL 文件被锁定)
- 修复错误,然后返回步骤 #2
如果我需要调试代码,我使用 VS2017 attach 来处理和调试代码(在步骤 #5 之后)。
这在 DX 方面并不理想,我希望有更好的东西,尽可能接近:
- 实现模块
- 编译
- 按 F5 (
start) - Powershell 窗口打开并加载了模块
- 运行命令
- 断点命中暂停程序,就像我们以前一样
我如何做到这一点?
【问题讨论】:
-
powershell如何锁定dll?它应该只阅读它。
-
Google 很好地解释了这一点,但简而言之——PS 中任何导入的模块都会加载到 PS 窗口的同一个 AppDomain 中。因此,只要 PS 窗口保持打开状态,.DLL 就被该 AppDomain 使用并因此被锁定。 (直到PS窗口关闭)
-
如果您将 powershell.exe 指定为要启动的可执行文件,并使用加载模块所需的应用程序参数(例如 -noexit -command "&{ ipmo
}")就可以了仍然锁定程序集?
标签: c# visual-studio powershell module visual-studio-2017