为什么$dlls.Count
会返回单个元素?我尝试声明我的字符串数组:
$basePath = Split-Path $MyInvocation.MyCommand.Path
$dlls = @(
$basePath + "\bin\debug\dll1.dll",
$basePath + "\bin\debug\dll2.dll",
$basePath + "\bin\debug\dll3.dll"
)
答案 0 :(得分:13)
你应该使用类似的东西:
$dlls = @(
($basePath + "\bin\debug\dll1.dll"),
($basePath + "\bin\debug\dll2.dll"),
($basePath + "\bin\debug\dll3.dll")
)
or
$dlls = @(
$($basePath + "\bin\debug\dll1.dll"),
$($basePath + "\bin\debug\dll2.dll"),
$($basePath + "\bin\debug\dll3.dll")
)
正如你的答案所示,分号也起作用,因为这标志着一个陈述的结束......将被评估,类似于使用括号。
或者,使用另一种模式,如:
$dlls = @()
$dlls += "...."
但是你可能想要使用ArrayList并获得性能优势......
答案 1 :(得分:3)
您正在梳理路径,因此使用Join-Path cmdlet:
$dlls = @(
Join-Path $basePath '\bin\debug\dll1.dll'
Join-Path $basePath '\bin\debug\dll2.dll'
Join-Path $basePath '\bin\debug\dll3.dll'
)
您不需要使用任何逗号,分号或括号。 另请参阅this answer。
答案 2 :(得分:2)
我找到了,我必须使用分号而不是逗号......任何人都可以解释原因吗?
根据几乎所有来源(例如this one)明确逗号
$basePath = Split-Path $MyInvocation.MyCommand.Path
$dlls = @(
$basePath + "\bin\debug\dll1.dll";
$basePath + "\bin\debug\dll2.dll";
$basePath + "\bin\debug\dll3.dll";
)