gpt4 book ai didi

debugging - 无法通过 Visual Studio 调试 PowerShell

转载 作者:行者123 更新时间:2023-12-05 00:39:52 28 4
gpt4 key购买 nike

我正在开发一个二进制 PowerShell 模块。我已经设置了模块项目的调试选项卡来启动 PowerShell 控制台并导入我的模块。如果我按 F5,它会按预期进行。

我遇到的问题是 Visual Studio 并没有真正“附加”到该过程中。 Modules 窗口是空的,我的断点都没有命中。

如果我手动启动 PowerShell 并附加到进程...BOOM!我可以调试。

F5ing 会比 Build+Launch+Attach 一遍又一遍更好:|

有任何想法吗?

编辑:

我发现如果我启用非托管代码调试,我会看到加载的模块。这是有道理的,因为 PowerShell.exe 是非托管的。现在的问题是,在“模块”窗口中,我所有的程序集符号状态都是“符号文件中没有 native 符号”。进程“powershell.exe”是“Native”而不是“Managed (v2.0.50727)”。看起来 VS 决定在 native 而不是在托管模式下进行调试。有什么办法可以改变这个?

最佳答案

我很久以前就解决了这个问题,不记得所有的细节,但这个技巧应该会有所帮助,希望如此。

创建文件 C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe.config:

<?xml version="1.0"?>
<configuration>
<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v4.0.30319"/>
<supportedRuntime version="v2.0.50727"/>
</startup>
</configuration>

x64机器:文件也需要复制到C:\Windows\SysWOW64\WindowsPowerShell\v1.0

注意:您可能需要删除 <supportedRuntime version="v4.0.30319"/> 行以避免加载 .NET 4(另一方面,您实际上可能想要这个,例如,如果 PowerShell 即将使用 .NET 4 程序集)。

如果您在托管 PowerShell 的应用程序中使用 PowerShell,则创建类似的文件 your_app.exe.config在应用程序主目录中。

据我记得 <startup useLegacyV2RuntimeActivationPolicy="true"> 行实际上有助于 VS 调试器正常工作。

关于debugging - 无法通过 Visual Studio 调试 PowerShell,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4106881/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com