答案 0 :(得分:6)
问题1:
在我看来像VS2010中的一个错误: https://connect.microsoft.com/VisualStudio/feedback/details/539389/debugging-powershell-cmdlet-from-vs-2010-does-not-stop-at-breakpoints?wa=wsignin1.0
使用VS2008应该有帮助。
更新: 我找到了更方便的方法来调试PowerShell cmdlet 。在解决方案资源管理器中,右键单击解决方案节点 - >添加 - >新项目 - >选择powershell.exe文件(C:\ Windows \ SysWOW64 \ WindowsPowerShell \ v1.0 \ powershell.exe)。将新添加的项目设置为启动项目(右键单击并选择“设置为启动项目”)。然后转到项目属性(右键单击项目节点并选择“属性”)并将“调试器类型”属性设置为“托管(v2.0,v1.1,v1.0)”。不要忘记注册您的Provider或CmdLet(通过运行post build事件,请参阅http://msdn.microsoft.com/en-us/library/ms714644%28v=vs.85%29.aspx)。现在,该程序应该在断点处停止。
答案 1 :(得分:2)
答案 2 :(得分:2)
我知道这篇帖子大约有一年的历史了,但无论如何这可能有助于其他人挣扎。
我发现以下方案适用于PowerShell 2.0。我也在Windows 7 64位上使用VS2010 SP1。
使用PS 2.0,您不再必须使用 installutil 安装cmdlet。相反,您可以使用Import-Module
代替(不需要管理员权限)。我不会详细介绍如何完成这项工作,因为网络搜索会显示大部分细节,但简而言之,您需要在以下位置创建一个文件夹(如果它尚不存在):
md (Join-Path (Split-Path $profile) modules)
在modules文件夹下,创建另一个与cmdlet DLL同名的文件夹(减去“.DLL”)。此文件夹将包含您的二进制文件和描述您的DLL的psd1文件(请参阅Module Manifests)。为方便起见,我创建了这个文件夹作为项目的bin \ debug文件夹的文件夹符号链接。
您仍然需要从Visual Studio运行PowerShell(或PowerShell ISE),如项目属性的“调试”选项卡的“开始操作”部分中的其他地方所述。
设置你的断点然后去吧。 PowerShell启动后,键入:
Import-Module <ModuleName>
然后运行cmdlet。
C:\Users\<me>\Documents\WindowsPowerShell\modules\MyCmdlet\MyCmdlet.dll
C:\Users\<me>\Documents\WindowsPowerShell\modules\MyCmdlet\MyCmdlet.pdb
C:\Users\<me>\Documents\WindowsPowerShell\modules\MyCmdlet\MyCmdlet.psd1
C:\Users\<me>\Documents\WindowsPowerShell\modules\MyCmdlet\MyCmdlet.Types.ps1xml (etc.)
在PowerShell类型中(也可以放在你的个人资料中):
Import-Module MyCmdlet
对我来说,这会触及我的所有断点,也会停止异常。所有这些都无需附加到流程等
答案 3 :(得分:1)
答案 4 :(得分:0)
答案 5 :(得分:0)
在调用Add-PSSnapin以使其在调试会话中可用之前,您没有提到如何安装插件。
确保使用C:\Windows\Microsoft.NET\Framework64\v2.0.50727\InstallUtil.exe
安装插件,而不是...... \ Framework中的插件... - 这让我困扰了几天。
答案 6 :(得分:0)
我在使用VS2010时出现此问题,但在安装SP1后它就消失了。