我有以下代码:
$some_things = "first", "second", "third"
[string[]] $other_things = "first", "seconds", "third"
[int[]] $more_things = 1,2,3,4
Write-Output "Break here" ## Breakpoint here
在 Visual Studio 2015 中调试上述 PowerShell 脚本时,我注意到以下特点。如果我在监视窗口中从上面检查三个变量,我会看到以下内容:
奇怪的是,当我展开时,$other_things
我看不到任何成员元素。我知道他们在那里,因为我可以使用以下方法遍历数组:
Write-Output "Length: $($other_things.Length)"
ForEach($thing in $other_things) {
Write-Output "Thing: $thing"
}
并在 VS 的输出窗口中得到以下输出:
因此,如果我在分配给string[]
VS 期间强制转换我的数组变量,似乎无法扩展该数组。如果我不按预期工作。
在 PowerGUI(我常用的 goto PowerShell 调试/脚本 IDE)中运行相同的代码不会出现相同的问题:
这是 Visual Studio 2015 Powershell 调试器中的错误吗?
(背景:出现这种情况的原因是我正在调用旧版.asmx
SOAP Web 服务,并且其中一个服务方法返回一个string[]
数组,就像$other_things
上面我无法检查的那样。直到我将服务调用包装在数组中子表达式运算符 ( @()
),它返回给我一个System.Object[]
字符串数组,然后我可以正确检查数组内容吗?)